연산자는 $natural 쿼리가 컬렉션에 있는 문서의 자연 순서를 사용하도록 강제합니다. 정렬 작업에서 삽입된 순서대로 또는 역순으로 문서를 검색하는 데 사용할 수 있습니다. 이 연산자는 인덱싱된 필드에 의존하지 않고 예측 가능한 순서 지정이 필요한 경우에 유용합니다.
문법
{
$natural: <1 | -1>
}
매개 변수
| 매개 변수 | Description |
|---|---|
1 |
순방향 자연 순서(삽입 순서)로 정렬합니다. |
-1 |
역순으로 정렬합니다(역방향 삽입 순서). |
예시
스토어 컬렉션에서 이 샘플 문서를 고려합니다.
{
"_id": "2cf3f885-9962-4b67-a172-aa9039e9ae2f",
"name": "First Up Consultants | Bed and Bath Center - South Amir",
"location": {
"lat": 60.7954,
"lon": -142.0012
},
"staff": {
"totalStaff": {
"fullTime": 18,
"partTime": 17
}
},
"sales": {
"totalSales": 37701,
"salesByCategory": [
{
"categoryName": "Mattress Toppers",
"totalSales": 37701
}
]
},
"promotionEvents": [
{
"eventName": "Price Drop Palooza",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 30
}
},
"discounts": [
{
"categoryName": "Bath Accessories",
"discountPercentage": 18
}
]
}
]
}
예제 1: 기본 자연 순서 정렬
이 쿼리는 컬렉션에 삽입된 순서대로 모든 저장소를 검색합니다.
db.stores.find({}).sort({
$natural: 1
})
예제 2: 역순 자연 순서
이 쿼리는 모든 저장소를 역방향 삽입 순서로 반환하며 가장 최근에 추가된 문서가 먼저 표시됩니다.
db.stores.find({}).sort({
$natural: -1
})
예제 3: 필터링을 사용하여 자연 순서
이 쿼리는 총 판매액이 50,000개보다 큰 저장소를 필터링하고 자연 삽입 순서로 반환합니다.
db.stores.find({
"sales.totalSales": {
$gt: 50000
}
}).sort({
$natural: 1
})
예제 4: 프로젝션을 사용하여 자연 순서
이 쿼리는 매장 이름, 총 판매액 및 위치 좌표만 자연 삽입 순서로 반환합니다.
db.stores.find({}, {
name: 1,
"sales.totalSales": 1,
"location.lat": 1,
"location.lon": 1
}).sort({ $natural: 1 })
예제 5: 제한이 있는 자연 순서
이 쿼리는 처음 세 개의 저장소를 자연 삽입 순서로 반환합니다.
db.stores.find({}).sort({
$natural: 1
}).limit(3)
사용 사례
연산자는 $natural 다음 시나리오에서 유용합니다.
- 감사 내역: 순서대로 문서를 처리해야 하는 경우 문서가 생성되었습니다.
- 시간순 처리: 삽입 순서가 중요한 시간에 민감한 데이터의 경우
- 일괄 처리: 인덱스 없이 예측 가능한 순서로 문서를 처리하는 경우
- 디버깅: 컬렉션에 있는 문서의 자연 저장 순서를 이해하려면