2013-03-17 3 views
1

기본 질문. mongodb 명령은 항상 컬렉션에 추가 된 순서대로 문서를 반환합니까? 올바른 순서로 선택 문서를 구현하는 것이 어떻게 가능합니까? 분류? 하지만 문서를 동시에 추가 한 날짜와 만든 날짜가 같은 경우 문서가 여전히 순서가 있습니다.몽고 저장 및 선택 주문

+1

는 http://stackoverflow.com/questions/11599069/what-does-mongo-sort-on-when-no-sort-order-is-specified/11599283 대답을합니까 너의 질문? – WiredPrairie

답변

2

음, 그렇습니다 ... 정확하게는 아닙니다. 문서는 기본적으로 자연 순서에 따라 정렬됩니다. 처음에는 문서가 디스크에 저장되는 순서입니다. 실제로 문서가 컬렉션에 추가 된 순서입니다. 그러나이 순서는 업데이트 작업 후 문서가 커지고 더 이상 현재 공간에 맞지 않으면 문서가 디스크에서 이동할 수 있으므로 결정적이지 않습니다. 이렇게하면 초기 (삽입) 순서가 변경 될 수 있습니다.

_id가 ObjectId 유형 인 경우 삽입 순서 정렬을 보장하는 방법은 {_id : 1}입니다. 그러면 오름차순으로 정렬 된 문서가 반환됩니다.

쓰기 작업이 동시에 수행되지 않습니다. 쓰기 잠금은 데이터베이스 레벨에서 부과됩니다 (V 2.4 이상). _id의 처음 4 바이트는 삽입 타임 스탬프이며 마지막 3 자리는 동일한 타임 스탬프가있는 ObjectId 인스턴스를 구별 (및 정렬)하는 데 사용되는 임의의 카운터입니다.

_id 필드는 기본적으로 인덱싱

+0

{_id : 1} 단위로 정렬하면 엔진이 내부 논리를 적용하여 문서를 올바른 순서로 정렬합니까? – WHITECOLOR

+0

예, id로 정렬하면 'id'가 '_id'필드를 의미하는 한 삽입 주문 –

+0

을 의미합니다. –