$zip - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

$zip

Amazon DocumentDB의 $zip 연산자를 사용하면 여러 배열을 단일 튜플 배열(키-값 페어)로 결합할 수 있습니다. 이는 문서 내에서 다양한 소스 또는 배열의 데이터를 결합하여 새 문서 또는 객체를 생성해야 할 때 유용합니다.

파라미터

  • inputs: 배열로 확인되는 표현식의 배열입니다. 이러한 배열은 단일 튜플 배열로 결합됩니다.

  • useLongestLength: (선택 사항) true인 경우 출력 배열은 가장 긴 입력 배열의 길이를 가지며 더 짧은 배열을 null 값으로 패딩합니다. false인 경우 출력 배열은 가장 짧은 입력 배열의 길이를 갖습니다.

  • defaults: (선택 사항) 해당 입력 배열이 가장 긴 입력 배열보다 짧고 인 경우 튜플에 사용할 기본값 배열useLongestLength입니다true.

예제(MongoDB 쉘)

다음 예제에서는 $zip 연산자를 사용하여 두 배열을 단일 튜플 배열로 결합하는 방법을 보여줍니다.

샘플 문서 생성

db.grades.insert([ { "_id": 1, "name": "John", "scores": [90, 85, 92], "classes": ["Math", "English", "Science"] }, { "_id": 2, "name": "Jane", "scores": [88, 91, 90, 85], "classes": ["Math", "English", "Science", "History"] } ])

쿼리 예제

db.grades.aggregate([ { $project: { "name": 1, "scoredClasses": { $zip: { inputs: ["$scores", "$classes"], useLongestLength: true, defaults: [null, null] } } } } ])

출력

[ { "_id": 1, "name": "John", "scoredClasses": [ [90, "Math"], [85, "English"], [92, "Science"], [null, null] ] }, { "_id": 2, "name": "Jane", "scoredClasses": [ [88, "Math"], [91, "English"], [90, "Science"], [85, "History"] ] } ]

코드 예제

$zip 명령을 사용하기 위한 코드 예제를 보려면 사용하려는 언어의 탭을 선택합니다.

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('grades'); const result = await collection.aggregate([ { $project: { "name": 1, "scoredClasses": { $zip: { inputs: ["$scores", "$classes"], useLongestLength: true, defaults: [null, null] } } } } ]).toArray(); console.log(result); client.close(); } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] collection = db['grades'] result = list(collection.aggregate([ { '$project': { 'name': 1, 'scoredClasses': { '$zip': { 'inputs': ['$scores', '$classes'], 'useLongestLength': True, 'defaults': [None, None] } } } } ])) print(result) client.close() example()