복붙노트

[MONGODB] 어떻게 MongoDB를 하나 개의 컬렉션 자신의 문서를 주문 하는가? [복제]

MONGODB

어떻게 MongoDB를 하나 개의 컬렉션 자신의 문서를 주문 하는가? [복제]

내 사용자 컬렉션에서, MongoDB를 일반적으로 주문 내가 그들을 만들 때와 같은 순서로 각각의 새로운 문서 : 생성 된 마지막 컬렉션의 마지막입니다. 그러나 나는 내가 만든 마지막 27 개 문서 사이의 6 위치가 다른 모음을 발견했다.

왜 그런 겁니까?

어떤 순서는 MongoDB의 컬렉션에서 각 문서를 다음?

해결법

  1. ==============================

    1.그것은 자연 순서라고 :

    그것은 자연 순서라고 :

    이 확인한다 일반적으로 당신은 당신이 삽입 같은 순서로 얻을하지만 보장-로 아니에요 당신이 나타났습니다.

    워드 프로세서가 언급 한 것처럼 분명히,이 기본 순서 (이 순서는 내부 구현 기능입니다, 당신은 그 안에 특정 구조에 의존해서는 안됩니다.)에 의존해서는 안됩니다.

    당신이 일을 정렬해야하는 경우, 정렬 솔루션을 사용합니다.

    (기본 순서는 $ 천연이기 때문에) 기본적으로 다음과 같은 두 가지 호출은 같은 순서로 문서를 반환해야합니다 :

    db.mycollection.find().sort({ "$natural": 1 })
    db.mycollection.find()
    

    다른 필드를 기준으로 정렬 할 경우 (예를 들어, 이름은) 당신은 할 수 있습니다 :

    db.mycollection.find().sort({ "name": 1 })
    
  2. ==============================

    2.당신이 그것을 요청하지 않는 MongoDB를이 전혀 없다 "순서"문서를한다.

    당신이 그것을 요청하지 않는 MongoDB를이 전혀 없다 "순서"문서를한다.

    당신이 그렇지 않으면 수행하도록 지시하지 않는 한 기본 삽입은 _id 기본 키 값에 ObjectId가 생성됩니다. 이 ObjectId가 값은 생성 된 각각의 값은 마지막으로보다 큰 보장을 의미합니다 "단순"또는 "계속 증가"특성을 가진 특수 값입니다.

    당신이 원하는 경우 "종류"명시 할 "분류"

     db.collection.find().sort({ "_id": 1 })
    

    디스크에 저장된 순서대로 또는 "자연"정렬 방법 :

    db.collection.find().sort({ "$natural": 1 })
    

    어떤 별도의 언급이나 "인덱스"정렬 순서를 결정합니다 쿼리 기준으로 선택하지 않으면 거의 표준입니다. 쿼리 기준이 달리 분류 인덱스를 선택한다면 당신은 순서 "힘"에 그것을 사용할 수 있습니다.

    MongoDB의 문서 "이동"할 때 성장, 따라서 _id 순서는 문서를 검색하는 것과 같은 순서로 항상 명시 적으로하지 않습니다.

  3. ==============================

    3.성능상의 이유로, MongoDB를 하드 드라이브에 문서를 분할하지 않습니다.

    성능상의 이유로, MongoDB를 하드 드라이브에 문서를 분할하지 않습니다.

    당신은 빈 컬렉션 시작하고에 문서를 한 후 문서를 삽입하기 시작하면, MongoDB를 디스크에 연속적를 배치합니다.

    문서를 업데이트 할 때 어떤 일이 발생하고 지금은 더 많은 공간이 필요하고 다음을 중복없이 더 이상 옛 위치에 맞지 않는? 이 경우 MongoDB를 그것을 삭제하고 수집 파일의 끝에 새로 재 - 추가합니다.

    귀하의 모음 파일은 사용되지 않은 공간의 구멍을 가지고있다. 이것은 꽤 낭비 그렇지? 삽입되어 다음 문서를 그 구멍에 맞게 충분히 작은이 그 구멍에 삽입됩니다 이유입니다. 즉 두 번째 모음의 경우 발생 가능성거야.

    결론 : 문서를 삽입 순서대로 반환에 의존하지 마십시오. 당신이 순서에 대해 신경 때 항상 결과를 정렬 할 수 있습니다.

  4. ==============================

    4.나는 그것에 대해 더 Ionică Bizău에서 제공하는 자연 순서로 링크 반환 덕분에 찾을 수 있습니다.

    나는 그것에 대해 더 Ionică Bizău에서 제공하는 자연 순서로 링크 반환 덕분에 찾을 수 있습니다.

    는 "$ 천연 매개 변수를 반환 상품 database.This 순서 내에서의 자연 순서에 따라하는 것은 내부 구현 기능, 당신은 그 안에 특정 구조에 의존해서는 안됩니다.

    전형적으로, 천연 순서는 MMAPv1 스토리지 엔진에 대한 다음 예외 신청서를 반영한다. 문서 때문에 문서 성장 또는 제거 작업의 재배치 후 새로 삽입 된 문서에 의해 촬영 공간을 확보하면 MMAPv1 스토리지 엔진의 경우, 자연의 질서 삽입 순서를 반영하지 않습니다. "

  5. from https://stackoverflow.com/questions/33018048/how-does-mongodb-order-their-docs-in-one-collection by cc-by-sa and MIT license