[MONGODB] 어떻게 MongoDB를 하나 개의 컬렉션 자신의 문서를 주문 하는가? [복제]
MONGODB어떻게 MongoDB를 하나 개의 컬렉션 자신의 문서를 주문 하는가? [복제]
내 사용자 컬렉션에서, MongoDB를 일반적으로 주문 내가 그들을 만들 때와 같은 순서로 각각의 새로운 문서 : 생성 된 마지막 컬렉션의 마지막입니다. 그러나 나는 내가 만든 마지막 27 개 문서 사이의 6 위치가 다른 모음을 발견했다.
왜 그런 겁니까?
어떤 순서는 MongoDB의 컬렉션에서 각 문서를 다음?
해결법
-
==============================
1.그것은 자연 순서라고 :
그것은 자연 순서라고 :
이 확인한다 일반적으로 당신은 당신이 삽입 같은 순서로 얻을하지만 보장-로 아니에요 당신이 나타났습니다.
워드 프로세서가 언급 한 것처럼 분명히,이 기본 순서 (이 순서는 내부 구현 기능입니다, 당신은 그 안에 특정 구조에 의존해서는 안됩니다.)에 의존해서는 안됩니다.
당신이 일을 정렬해야하는 경우, 정렬 솔루션을 사용합니다.
(기본 순서는 $ 천연이기 때문에) 기본적으로 다음과 같은 두 가지 호출은 같은 순서로 문서를 반환해야합니다 :
db.mycollection.find().sort({ "$natural": 1 }) db.mycollection.find()
다른 필드를 기준으로 정렬 할 경우 (예를 들어, 이름은) 당신은 할 수 있습니다 :
db.mycollection.find().sort({ "name": 1 })
-
==============================
2.당신이 그것을 요청하지 않는 MongoDB를이 전혀 없다 "순서"문서를한다.
당신이 그것을 요청하지 않는 MongoDB를이 전혀 없다 "순서"문서를한다.
당신이 그렇지 않으면 수행하도록 지시하지 않는 한 기본 삽입은 _id 기본 키 값에 ObjectId가 생성됩니다. 이 ObjectId가 값은 생성 된 각각의 값은 마지막으로보다 큰 보장을 의미합니다 "단순"또는 "계속 증가"특성을 가진 특수 값입니다.
당신이 원하는 경우 "종류"명시 할 "분류"
db.collection.find().sort({ "_id": 1 })
디스크에 저장된 순서대로 또는 "자연"정렬 방법 :
db.collection.find().sort({ "$natural": 1 })
어떤 별도의 언급이나 "인덱스"정렬 순서를 결정합니다 쿼리 기준으로 선택하지 않으면 거의 표준입니다. 쿼리 기준이 달리 분류 인덱스를 선택한다면 당신은 순서 "힘"에 그것을 사용할 수 있습니다.
MongoDB의 문서 "이동"할 때 성장, 따라서 _id 순서는 문서를 검색하는 것과 같은 순서로 항상 명시 적으로하지 않습니다.
-
==============================
3.성능상의 이유로, MongoDB를 하드 드라이브에 문서를 분할하지 않습니다.
성능상의 이유로, MongoDB를 하드 드라이브에 문서를 분할하지 않습니다.
당신은 빈 컬렉션 시작하고에 문서를 한 후 문서를 삽입하기 시작하면, MongoDB를 디스크에 연속적를 배치합니다.
문서를 업데이트 할 때 어떤 일이 발생하고 지금은 더 많은 공간이 필요하고 다음을 중복없이 더 이상 옛 위치에 맞지 않는? 이 경우 MongoDB를 그것을 삭제하고 수집 파일의 끝에 새로 재 - 추가합니다.
귀하의 모음 파일은 사용되지 않은 공간의 구멍을 가지고있다. 이것은 꽤 낭비 그렇지? 삽입되어 다음 문서를 그 구멍에 맞게 충분히 작은이 그 구멍에 삽입됩니다 이유입니다. 즉 두 번째 모음의 경우 발생 가능성거야.
결론 : 문서를 삽입 순서대로 반환에 의존하지 마십시오. 당신이 순서에 대해 신경 때 항상 결과를 정렬 할 수 있습니다.
-
==============================
4.나는 그것에 대해 더 Ionică Bizău에서 제공하는 자연 순서로 링크 반환 덕분에 찾을 수 있습니다.
나는 그것에 대해 더 Ionică Bizău에서 제공하는 자연 순서로 링크 반환 덕분에 찾을 수 있습니다.
는 "$ 천연 매개 변수를 반환 상품 database.This 순서 내에서의 자연 순서에 따라하는 것은 내부 구현 기능, 당신은 그 안에 특정 구조에 의존해서는 안됩니다.
전형적으로, 천연 순서는 MMAPv1 스토리지 엔진에 대한 다음 예외 신청서를 반영한다. 문서 때문에 문서 성장 또는 제거 작업의 재배치 후 새로 삽입 된 문서에 의해 촬영 공간을 확보하면 MMAPv1 스토리지 엔진의 경우, 자연의 질서 삽입 순서를 반영하지 않습니다. "
from https://stackoverflow.com/questions/33018048/how-does-mongodb-order-their-docs-in-one-collection by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 직접 자바 스크립트를 통해 액세스 MongoDB를 (0) | 2019.12.23 |
---|---|
[MONGODB] 보관 UTC와 몽고에 현지 날짜 (0) | 2019.12.23 |
[MONGODB] 자동으로 MongoDB를에서 삭제의 개체를 참조 제거 (0) | 2019.12.23 |
[MONGODB] MongoDB의 사용자 정의 개체 ID 만들기 (0) | 2019.12.23 |
[MONGODB] 어떻게 자바 MongoDB의 드라이버에서 "_id"필드를 사용하여 쿼리 문서? (0) | 2019.12.23 |