다음을 통해 공유


$zip(배열 식)

적용 대상: MongoDB vCore

$zip 연산자는 요소 단위로 두 개 이상의 배열을 단일 배열 배열로 병합하는 데 사용됩니다. 여러 배열의 관련 요소를 단일 배열 구조로 결합하려는 경우에 유용합니다.

구문

연산자의 $zip 구문은 다음과 같습니다.

{
  $zip: {
    inputs: [ <array1>, <array2>, ... ],
    useLongestLength: <boolean>, // Optional
    defaults: <array> // Optional
  }
}

매개 변수

설명
inputs 요소 단위로 병합할 배열의 배열입니다.
useLongestLength true로 설정된 경우 입력 배열의 가장 긴 길이를 사용하는 부울 값입니다. false이거나 지정되지 않은 경우 가장 짧은 길이를 사용합니다.
defaults true이고 입력 배열이 가장 긴 배열보다 짧은 경우 useLongestLength 사용할 기본값의 배열입니다.

예시

데이터 세트의 샘플 json stores 사용량을 이해해 보겠습니다.

{
  "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
  "name": "Lakeshore Retail",
  "location": {
    "lat": -51.3041,
    "lon": -166.0838
  },
  "staff": {
    "totalStaff": {
      "fullTime": 5,
      "partTime": 20
    }
  },
  "sales": {
    "totalSales": 266491,
    "salesByCategory": [
      {
        "categoryName": "Towel Racks",
        "totalSales": 13237
      },
      {
        "categoryName": "Washcloths",
        "totalSales": 44315
      },
      {
        "categoryName": "Face Towels",
        "totalSales": 42095
      },
      {
        "categoryName": "Toothbrush Holders",
        "totalSales": 47912
      },
      {
        "categoryName": "Hybrid Mattresses",
        "totalSales": 48660
      },
      {
        "categoryName": "Napkins"
      },
      {
        "categoryName": "Pillow Cases",
        "totalSales": 38833
      }
    ]
  }
}

예제 1: 기본 사용

배열에서 categoryName 필드와 totalSales 필드를 병합하려는 경우를 가정해 salesByCategory 보겠습니다.

db.stores.aggregate([
  { $match: {"_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60"} },
  {
    $project: {
      name:1,
      categoryNames: "$sales.salesByCategory.categoryName",
      totalSales: "$sales.salesByCategory.totalSales",
      categoryWithSales: {
        $zip: {
          inputs: ["$sales.salesByCategory.categoryName", "$sales.salesByCategory.totalSales"],
          useLongestLength: false
        }
      }
    }
  }
])

그러면 필드 아래에 categoryWithSales 있는 배열의 개별 배열에 대한 출력이 생성됩니다. useLongestLength값이 출력에서 배열을 제거하는 동안 false 다음 출력을 Napkins 반환하도록 true 설정됩니다.

{
  "_id": "988d2dd1-2faa-4072-b420-b91b95cbfd60",
  "name": "Lakeshore Retail",
  "categoryNames": [
    "Towel Racks",
    "Washcloths",
    "Face Towels",
    "Toothbrush Holders",
    "Hybrid Mattresses",
    "Napkins",
    "Pillow Cases"
  ],
  "totalSales": [
    13237, 44315,
    42095, 47912,
    48660, 38833
  ],
  "categoryWithSales": [
    ["Towel Racks", 13237],
    ["Washcloths", 44315],
    ["Face Towels", 42095],
    ["Toothbrush Holders", 47912],
    ["Hybrid Mattresses", 48660],
    ["Napkins", null],
    ["Pillow Cases", 38833]
  ]
}
  • MongoDB에서 Azure Cosmos DB for MongoDB(vCore)로 마이그레이션하기 위한 옵션 검토
  • MongoDB와의 기능 호환성에 대해 자세히 알아보기