$lookup - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$lookup

La phase $lookup d'agrégation dans Amazon DocumentDB vous permet d'effectuer une jointure externe gauche entre deux collections. Cette opération vous permet de combiner les données de plusieurs collections en fonction des valeurs de champ correspondantes. Cela est particulièrement utile lorsque vous devez intégrer des données provenant de collections connexes dans les résultats de vos requêtes.

Paramètres

  • from: nom de la collection avec laquelle effectuer la jointure.

  • localField: Le champ des documents d'entrée à mettre en correspondance avec leforeignField.

  • foreignField: Le champ des documents de la from collection à mettre en correspondance avec lelocalField.

  • as: nom du nouveau champ à ajouter aux documents de sortie contenant les documents correspondants de la from collection.

Exemple (MongoDB Shell)

L'exemple suivant illustre une $lookup opération simple qui permet de joindre les données de la orders collection à la customers collection.

Création d'exemples de documents

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

Exemple de requête

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

Sortie

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

Exemples de code

Pour afficher un exemple de code relatif à l'utilisation de la $lookup commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

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