$lookup - 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.

$lookup

La etapa de $lookup agregación de Amazon DocumentDB le permite realizar una unión externa izquierda entre dos colecciones. Esta operación le permite combinar datos de varias colecciones en función de los valores de campo coincidentes. Resulta especialmente útil cuando necesita incorporar datos de colecciones relacionadas en los resultados de las consultas.

Parámetros

  • from: el nombre de la colección con la que se va a realizar la unión.

  • localField: El campo de los documentos de entrada que debe coincidir con elforeignField.

  • foreignField: El campo de los documentos de la from colección que coincide con ellocalField.

  • as: el nombre del nuevo campo que se va a añadir a los documentos de salida que contienen los documentos coincidentes de la from colección.

Ejemplo (MongoDB Shell)

El siguiente ejemplo muestra una $lookup operación sencilla que une los datos de la orders colección en la customers colección.

Cree documentos de muestra

db.customers.insertMany([ { _id: 1, name: "Alice" }, { _id: 2, name: "Bob" }, { _id: 3, name: "Charlie" } ]); db.orders.insertMany([ { _id: 1, customer_id: 1, total: 50 }, { _id: 2, customer_id: 1, total: 100 }, { _id: 3, customer_id: 2, total: 75 } ]);

Ejemplo de consulta

db.customers.aggregate([ { $lookup: { from: "orders", localField: "_id", foreignField: "customer_id", as: "orders" } } ]);

Salida

[ { _id: 1, name: 'Alice', orders: [ { _id: 2, customer_id: 1, total: 100 }, { _id: 1, customer_id: 1, total: 50 } ] }, { _id: 3, name: 'Charlie', orders: [] }, { _id: 2, name: 'Bob', orders: [ { _id: 3, customer_id: 2, total: 75 } ] } ]

Ejemplos de código

Para ver un ejemplo de código para usar el $lookup 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'); await client.connect(); const db = client.db('test'); const result = await db.collection('customers').aggregate([ { $lookup: { from: 'orders', localField: '_id', foreignField: 'customer_id', as: 'orders' } } ]).toArray(); console.log(JSON.stringify(result, null, 2)); await 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.customers pipeline = [ { "$lookup": { "from": "orders", "localField": "_id", "foreignField": "customer_id", "as": "orders" } } ] result = collection.aggregate(pipeline) for doc in result: print(doc) client.close() example()