$zip - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

$zip

O $zip operador no Amazon DocumentDB permite combinar várias matrizes em uma única matriz de tuplas (pares de valores-chave). Isso é útil quando você precisa criar novos documentos ou objetos combinando dados de diferentes fontes ou matrizes em um documento.

Parâmetros

  • inputs: uma matriz de expressões que se resolvem em matrizes. Essas matrizes serão combinadas em uma única matriz de tuplas.

  • useLongestLength: (opcional) Setrue, a matriz de saída tiver o comprimento da matriz de entrada mais longa, preenchendo matrizes mais curtas com valores. null Sefalse, a matriz de saída terá o comprimento da matriz de entrada mais curta.

  • defaults: (opcional) Uma matriz de valores padrão a serem usados para as tuplas se a matriz de entrada correspondente for menor que a matriz de entrada mais longa e useLongestLength for. true

Exemplo (MongoDB Shell)

O exemplo a seguir demonstra como usar o $zip operador para combinar duas matrizes em uma única matriz de tuplas.

Crie documentos de amostra

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

Exemplo de consulta

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

Saída

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

Exemplos de código

Para ver um exemplo de código para usar o $zip comando, escolha a guia do idioma que você deseja usar:

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