$natural

연산자는 $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 다음 시나리오에서 유용합니다.

  • 감사 내역: 순서대로 문서를 처리해야 하는 경우 문서가 생성되었습니다.
  • 시간순 처리: 삽입 순서가 중요한 시간에 민감한 데이터의 경우
  • 일괄 처리: 인덱스 없이 예측 가능한 순서로 문서를 처리하는 경우
  • 디버깅: 컬렉션에 있는 문서의 자연 저장 순서를 이해하려면