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

$ fusion

Introduit dans la version 8.0

L'étape d'$mergeagrégation dans Amazon DocumentDB est utilisée pour fusionner les résultats de l'étape de pipeline précédente dans une collection cible. Cela est utile pour mettre à jour ou insérer des documents dans une collection cible en fonction des données des documents d'entrée.

L'$mergeétape vous permet d'effectuer diverses actions en fonction de la condition de correspondance entre les documents d'entrée et la collection cible, telles que :

- Insert new documents - Update existing documents - Delete documents - Fail the operation if there are any conflicts

Paramètres

  • into: (obligatoire) Le nom de la collection cible dans laquelle fusionner les documents d'entrée.

  • on: (obligatoire) Le ou les champs à utiliser comme condition de correspondance entre les documents d'entrée et la collection cible.

  • whenMatched: (facultatif) Action à effectuer lorsque le document d'entrée correspond à un document existant dans la collection cible. Les valeurs prises en charge sont "merge", "replace", "keepExisting" et "fail".

  • whenNotMatched: (facultatif) Action à effectuer lorsque le document d'entrée ne correspond à aucun document de la collection cible. Les valeurs prises en charge sont les suivantes : "insert" et"fail".

Exemple (MongoDB Shell)

L'exemple suivant montre comment utiliser le $merge stage pour mettre à jour une users collection avec de nouvelles données provenant d'un pipeline d'entrée.

Création d'exemples de documents

db.users.insertMany([ { _id: 1, name: "John Doe", email: "john@example.com" }, { _id: 2, name: "Jane Smith", email: "jane@example.com" } ]); db.inputData.insertMany([ { _id: 1, name: "John Doe", email: "john@example.com", phone: "123-456-7890" }, { _id: 3, name: "Bob Johnson", email: "bob@example.com", phone: "987-654-3210" } ]);

Exemple de requête

db.inputData.aggregate([ { $merge: { into: "users", on: "_id", whenMatched: "merge", whenNotMatched: "insert" } } ])

Sortie

Après avoir exécuté le $merge pipeline, la users collection contiendra les documents suivants :

[ { _id: 1, name: "John Doe", email: "john@example.com", phone: "123-456-7890" }, { _id: 2, name: "Jane Smith", email: "jane@example.com" }, { _id: 3, name: "Bob Johnson", email: "bob@example.com", phone: "987-654-3210" } ]

Exemples de code

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

Node.js

Voici un exemple d'utilisation de l'opérateur $merge dans une application 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'); await db.collection('inputData').aggregate([ { $merge: { into: 'users', on: '_id', whenMatched: 'merge', whenNotMatched: 'insert' } } ]).toArray(); const users = await db.collection('users').find({}).toArray(); console.log(users); await client.close(); } example();
Python

Voici un exemple d'utilisation de l'opérateur $merge dans une application 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'] # Assumes collections 'users' and 'inputData' already exist with sample data db.inputData.aggregate([ { '$merge': { 'into': 'users', 'on': '_id', 'whenMatched': 'merge', 'whenNotMatched': 'insert' } } ]) users = list(db.users.find({})) print(users) client.close() example()