복붙노트

[MONGODB] 더 정렬 순서가 지정되지 않은 경우 어떻게 MongoDB를 정렬 기록을합니까?

MONGODB

더 정렬 순서가 지정되지 않은 경우 어떻게 MongoDB를 정렬 기록을합니까?

우리가 지정한 정렬 순서없이 몽고의 발견 () 쿼리를 실행하면 어떤 데이터베이스가 내부적으로 결과를 정렬하는 데 사용합니까?

몽고 웹 사이트의 문서에 따르면 :

그러나 표준 컬렉션 (비 덮인 컬렉션)에 대한, 어떤 필드는 결과를 정렬하는 데 사용됩니다? 그것은 _id 필드 또는 뭔가 다른가요?

편집하다:

기본적으로, 나는 내가 무엇을 얻을하려고하는 추측이 내가 다음 검색 쿼리를 실행하는 경우 :

db.collection.find({"x":y}).skip(10000).limit(1000);

시간에 두 개의 서로 다른 지점에서 : T1과 T2, 나는 다른 결과 세트를 얻을 것이다 :

나는 임시 데이터베이스에 대한 몇 가지 테스트를 실행하고 내가 입수 한 결과는 모두 3 가지 경우에 (예) 동일합니다 -하지만 난 확인하고 싶어하고 나는 나의 테스트 케이스가 매우 철저되지 않았 음을 확신합니다.

해결법

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

    1.정의에 의해 정렬 기본값은 정의되지 않은, 그래서 문서의 반환 순서입니다. 어떤 쿼리가 없으면 그것은 자연의 질서를 사용합니다. 결과는 신청서와 일치 할 수있다 이들이 발견 된 순서로 리턴된다 (그러나 보장되지 않는다) 또는 사용 된 인덱스 순서 (ES).

    정의에 의해 정렬 기본값은 정의되지 않은, 그래서 문서의 반환 순서입니다. 어떤 쿼리가 없으면 그것은 자연의 질서를 사용합니다. 결과는 신청서와 일치 할 수있다 이들이 발견 된 순서로 리턴된다 (그러나 보장되지 않는다) 또는 사용 된 인덱스 순서 (ES).

    저장 (자연) 순서에 영향을 미칠 것이라는 점을 몇 가지 예 :

    인덱스를 사용하는 경우, 문서는 발견 된 순서대로 반환됩니다. 하나 개 이상의 인덱스가 다음 사용하는 경우 순서는 먼저 중복 제거 과정에서 문서를 확인하는 인덱스에 내부적으로 의존한다.

    특정 순서를 원하는 경우에 당신은 당신의 쿼리와 종류를 포함해야합니다.

    문서 이동할 수없고, 삽입 순서로 저장되어 있기 때문에 캡핑 컬렉션의 자연 주문 바와 예외이다. 순서는 먼저 "에서 시대"가장 오래된 문서를 보장 덮인 수집 기능의 일부입니다. 또한 문서가 삭제 또는 덮인 컬렉션 이동할 수 없습니다 (자세한 내용은 사용 및 제한 사항 참조).

  2. ==============================

    2.그것은 저장된 순서 (파일의 순서)로 반환되지만 그들이 삽입 된 순서에 있는지 보장하지 않습니다. 그들은 _id 필드를 기준으로 정렬되지 않습니다. 이 삽입 순서에 따라 정렬되어 있지만 다른 요청으로 변경할 수 있습니다처럼 때로는 모양을 할 수 있습니다. 그것은 신뢰할 수 없습니다.

    그것은 저장된 순서 (파일의 순서)로 반환되지만 그들이 삽입 된 순서에 있는지 보장하지 않습니다. 그들은 _id 필드를 기준으로 정렬되지 않습니다. 이 삽입 순서에 따라 정렬되어 있지만 다른 요청으로 변경할 수 있습니다처럼 때로는 모양을 할 수 있습니다. 그것은 신뢰할 수 없습니다.

  3. from https://stackoverflow.com/questions/11599069/how-does-mongodb-sort-records-when-no-sort-order-is-specified by cc-by-sa and MIT license