$zip - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

$zip

El $zip operador de Amazon DocumentDB le permite combinar varias matrices en una sola matriz de tuplas (pares clave-valor). Esto resulta útil cuando necesita crear nuevos documentos u objetos mediante la combinación de datos de distintas fuentes o matrices dentro de un documento.

Parámetros

  • inputs: conjunto de expresiones que se convierten en matrices. Estas matrices se combinarán en una sola matriz de tuplas.

  • useLongestLength: (opcional) Sitrue, la matriz de salida tendrá la longitud de la matriz de entrada más larga, rellenando las matrices más cortas con valores. null Sifalse, la matriz de salida tendrá la longitud de la matriz de entrada más corta.

  • defaults: (opcional) Una matriz de valores predeterminados para usar en las tuplas si la matriz de entrada correspondiente es más corta que la matriz de entrada más larga y lo useLongestLength estrue.

Ejemplo (MongoDB Shell)

El siguiente ejemplo muestra cómo utilizar el $zip operador para combinar dos matrices en una sola matriz de tuplas.

Cree documentos de muestra

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

Ejemplo de consulta

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

Salida

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

Ejemplos de código

Para ver un ejemplo de código para usar el $zip comando, elija la pestaña del idioma que desee 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()