비교/순서 정렬
정렬 작업에서 서로 다른 BSON types의 값을 비교할 때 MongoDB는 가장 낮은 것부터 가장 높은 것까지 다음과 같은 비교 순서를 사용합니다.
MinKey(내부 유형)
Null
숫자(정수, long, double, decimals)
기호, 문자열
객체
배열
BinData
ObjectId
부울
날짜
타임스탬프
정규 표현식
JavaScript 코드
MaxKey(내부 유형)
참고
Range query operators perform comparisons only on fields where the BSON type matches the query value's type. MongoDB enforces comparisons with Comparison Query Operators only on documents where the BSON type of the target field matches the query operand type through Type Bracketing.
숫자 유형
MongoDB는 비교 목적으로 일부 유형을 동등한 유형으로 취급합니다. 인스턴스, 숫자 유형은 비교 전에 변환 과정을 거칩니다.
문자열
이진 비교
기본적으로 MongoDB는 단순 이진 비교를 사용하여 문자열을 비교합니다.
데이터 정렬
데이터 정렬을 사용하면 대소문자 및 악센트 표시 규칙과 같은 문자열 비교에 대한 언어별 규칙을 지정할 수 있습니다.
데이터 정렬 사양의 구문은 다음과 같습니다:
{ locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> }
데이터 정렬을 지정할 때 locale
필드는 필수이고, 다른 데이터 정렬 필드는 모두 선택 사항입니다. 필드에 대한 설명은 데이터 정렬 문서를 참조하세요.
컬렉션 또는 연산에 대한 데이터 정렬이 지정되지 않은 경우, MongoDB는 이전 버전에서 문자열 비교에 사용된 간단한 이진 비교를 사용합니다.
배열
배열 비교에서
An ascending sort compares the smallest elements of the array according to the BSON type sort order.
A descending sort compares the largest elements of the array according to the reverse BSON type sort order.
Comparison Query Operators, such as
$lt
and$gt
, perform comparisons on arrays lexicographically.When comparing a field whose value is a one element array (for example,
[ 1 ]
) with non-array fields (for example,2
), the comparison is for1
and2
.A comparison of an empty array (for example,
[ ]
) considers the empty array as less than anull
value or a missing field value.A comparison of a nested array (for example,
[[1, 2], [3, 4]]
) compares any array after the outmost array lexicographically.
참고
Comparison Query Operators enforce type-bracketing when the query is an array. If the indexed value is an array, the operator performs a type-bracketed comparison element-wise over the indexed array.
객체
MongoDB의 BSON 객체 비교는 다음 순서를 사용합니다:
BSON 객체 내에 나타나는 순서대로 키-값 쌍을 재귀적으로 비교합니다.
필드 유형을 비교합니다. MongoDB는 필드 유형에 대해 가장 낮은 것부터 가장 높은 것까지 다음과 같은 비교 순서를 사용합니다:
MinKey(내부 유형)
Null
숫자(정수, long, double, decimals)
기호, 문자열
객체
배열
BinData
ObjectId
부울
날짜
타임스탬프
정규 표현식
JavaScript 코드
MaxKey(내부 유형)
필드 유형이 동일한 경우 키 필드 이름을 비교합니다.
키 필드 이름이 같으면 필드 값을 비교합니다.
필드 값이 같으면 다음 키/값 쌍을 비교합니다(1단계로 돌아갑니다). 더 많은 쌍이 없는 객체는 더 많은 쌍이 있는 객체보다 작습니다.
날짜 및 타임스탬프
날짜 객체는 타임스탬프 객체보다 먼저 정렬됩니다.
Non-existent Fields
The comparison treats a non-existent field as if it were null. A sort on the a
field in documents { }
and { a: null }
would treat the documents as equivalent in sort order.
BinData
MongoDB가 BinData
를 다음 순서로 정렬합니다.
첫째, 데이터의 길이 또는 크기입니다.
그런 다음 BSON 1바이트 하위 유형을 기준으로 합니다.
Finally, by the data, performing a byte-by-byte comparison on unsigned bytes.