Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

비교/순서 정렬

이 페이지의 내용

  • 숫자 유형
  • 문자열
  • 배열
  • 객체
  • 날짜 및 타임스탬프
  • Non-existent Fields
  • BinData

정렬 작업에서 서로 다른 BSON types의 값을 비교할 때 MongoDB는 가장 낮은 것부터 가장 높은 것까지 다음과 같은 비교 순서를 사용합니다.

  1. MinKey(내부 유형)

  2. Null

  3. 숫자(정수, long, double, decimals)

  4. 기호, 문자열

  5. 객체

  6. 배열

  7. BinData

  8. ObjectId

  9. 부울

  10. 날짜

  11. 타임스탬프

  12. 정규 표현식

  13. JavaScript 코드

  14. MaxKey(내부 유형)

참고

범위 쿼리 연산자는 BSON 유형이 쿼리 값의 유형과 일치하는 필드에 대해서만 비교를 수행합니다. MongoDB 는 유형 괄호를 통해대상 필드 의 BSON 유형이 쿼리 피연산자 유형과 일치하는 문서에 대해서만 비교 쿼리 연산자를 사용한 비교를 시행합니다.

MongoDB는 비교 목적으로 일부 유형을 동등한 유형으로 취급합니다. 인스턴스, 숫자 유형은 비교 전에 변환 과정을 거칩니다.

기본적으로 MongoDB는 단순 이진 비교를 사용하여 문자열을 비교합니다.

버전 3.4에 새로 추가되었습니다.

데이터 정렬을 사용하면 대소문자 및 악센트 표시 규칙과 같은 문자열 비교에 대한 언어별 규칙을 지정할 수 있습니다.

데이터 정렬 사양의 구문은 다음과 같습니다:

{
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

데이터 정렬을 지정할 때 locale 필드는 필수이고, 다른 데이터 정렬 필드는 모두 선택 사항입니다. 필드에 대한 설명은 데이터 정렬 문서를 참조하세요.

컬렉션 또는 연산에 대한 데이터 정렬이 지정되지 않은 경우, MongoDB는 이전 버전에서 문자열 비교에 사용된 간단한 이진 비교를 사용합니다.

배열 비교에서

  • 오름차순 정렬은 BSON 유형 정렬 순서에 따라 배열 의 가장 작은 요소를 비교합니다.

  • 내림차순 정렬은 역 BSON 유형 정렬 순서에 따라 배열 의 가장 큰 요소를 비교합니다.

  • 및 과 $lt같은 비교 $gt 쿼리 연산자는 배열을 사전순으로 비교합니다.

  • 값이 한 요소 배열 ( 예시 : [ 1 ])인 필드를 배열이 아닌 필드 ( 예시: 2)와 비교할 때 비교는 12 에 대한 것입니다.

  • 빈 배열 ( 예시: [ ])을 비교하면 빈 배열 이 null 값보다 작거나 누락된 필드 값으로 간주됩니다.

  • 중첩된 배열 의 비교( 예시 : [[1, 2], [3, 4]])는 가장 바깥쪽 배열 이후의 모든 배열 을 사전순으로 비교합니다.

참고

비교 쿼리 연산자는 쿼리 가 배열 인 경우 유형 괄호를 시행하다 합니다. 인덱싱된 값이 배열 인 경우 연산자 는 인덱싱된 배열 에 대해 요소별로 유형별 괄호 비교를 수행합니다.

MongoDB의 BSON 객체 비교는 다음 순서를 사용합니다:

  1. BSON 객체 내에 나타나는 순서대로 키-값 쌍을 재귀적으로 비교합니다.

  2. 필드 유형을 비교합니다. MongoDB는 필드 유형에 대해 가장 낮은 것부터 가장 높은 것까지 다음과 같은 비교 순서를 사용합니다:

    1. MinKey(내부 유형)

    2. Null

    3. 숫자(정수, long, double, decimals)

    4. 기호, 문자열

    5. 객체

    6. 배열

    7. BinData

    8. ObjectId

    9. 부울

    10. 날짜

    11. 타임스탬프

    12. 정규 표현식

    13. JavaScript 코드

    14. MaxKey(내부 유형)

  3. 필드 유형이 동일한 경우 키 필드 이름을 비교합니다.

  4. 키 필드 이름이 같으면 필드 값을 비교합니다.

  5. 필드 값이 같으면 다음 키/값 쌍을 비교합니다(1단계로 돌아갑니다). 더 많은 쌍이 없는 객체는 더 많은 쌍이 있는 객체보다 작습니다.

날짜 객체는 타임스탬프 객체보다 먼저 정렬됩니다.

비교는 존재하지 않는 필드 를 null로 취급합니다. 문서 { }{ a: null }a 필드 에 대한 정렬은 문서를 정렬 순서에서 동일한 것으로 처리합니다.

MongoDB가 BinData를 다음 순서로 정렬합니다.

  1. 첫째, 데이터의 길이 또는 크기입니다.

  2. 그런 다음 BSON 1바이트 하위 유형을 기준으로 합니다.

  3. 마지막으로 데이터를 기준으로 부호 없는 바이트에서 바이트 단위로 비교를 수행합니다.

돌아가기

BSON 유형