$zip - Amazon DocumentDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

$zip

$zipOperator di Amazon DocumentDB memungkinkan Anda untuk menggabungkan beberapa array ke dalam satu array tupel (pasangan kunci-nilai). Ini berguna ketika Anda perlu membuat dokumen atau objek baru dengan menggabungkan data dari berbagai sumber atau array dalam dokumen.

Parameter

  • inputs: Sebuah array ekspresi yang menyelesaikan array. Array ini akan digabungkan menjadi satu array tupel.

  • useLongestLength: (opsional) Jikatrue, array output akan memiliki panjang array input terpanjang, padding array yang lebih pendek dengan null nilai. Jikafalse, array output akan memiliki panjang array input terpendek.

  • defaults: (opsional) Sebuah array nilai default untuk digunakan untuk tupel jika array input yang sesuai lebih pendek dari array input terpanjang dan useLongestLength adalah. true

Contoh (MongoDB Shell)

Contoh berikut menunjukkan bagaimana menggunakan $zip operator untuk menggabungkan dua array ke dalam array tunggal tupel.

Buat dokumen sampel

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"] } ])

Contoh kueri

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

Keluaran

[ { "_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"] ] } ]

Contoh kode

Untuk melihat contoh kode untuk menggunakan $zip perintah, pilih tab untuk bahasa yang ingin Anda gunakan:

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()