$zip - Amazon DocumentDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

$zip

Amazon DocumentDB の $zip演算子を使用すると、複数の配列を 1 つのタプルの配列 (キーと値のペア) に結合できます。これは、ドキュメント内のさまざまなソースまたは配列のデータを組み合わせて、新しいドキュメントまたはオブジェクトを作成する必要がある場合に便利です。

パラメータ

  • inputs: 配列に解決される式の配列。これらの配列は 1 つのタプル配列に結合されます。

  • useLongestLength: (オプション) の場合true、出力配列は最長の入力配列の長さになり、短い配列はnull値でパディングされます。の場合false、出力配列は最短の入力配列の長さになります。

  • defaults: (オプション) 対応する入力配列が最長の入力配列より短く、 useLongestLength が の場合にタプルに使用するデフォルト値の配列true

例 (MongoDB シェル)

次の例は、 $zip演算子を使用して 2 つの配列を 1 つのタプル配列に結合する方法を示しています。

サンプルドキュメントを作成する

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