$ zusammenführen - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$ zusammenführen

In 8.0 eingeführt

Die $merge Aggregationsphase in Amazon DocumentDB wird verwendet, um die Ergebnisse der vorherigen Pipeline-Phase in einer Zielsammlung zusammenzuführen. Dies ist nützlich, um Dokumente auf der Grundlage der Daten aus den Eingabedokumenten zu aktualisieren oder in eine Zielsammlung einzufügen.

In dieser $merge Phase können Sie verschiedene Aktionen ausführen, die auf der Übereinstimmungsbedingung zwischen den Eingabedokumenten und der Zielsammlung basieren, z. B.:

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

Parameter

  • into: (erforderlich) Der Name der Zielsammlung, zu der die Eingabedokumente zusammengeführt werden sollen.

  • on: (erforderlich) Die Felder, die als Vergleichsbedingung zwischen den Eingabedokumenten und der Zielsammlung verwendet werden sollen.

  • whenMatched: (optional) Die Aktion, die ausgeführt werden soll, wenn das Eingabedokument mit einem vorhandenen Dokument in der Zielsammlung übereinstimmt. Unterstützte Werte sind "merge", "replace", "keepExisting" und "fail".

  • whenNotMatched: (optional) Die Aktion, die ausgeführt werden soll, wenn das Eingabedokument mit keinem Dokument in der Zielsammlung übereinstimmt. Unterstützte Werte sind: "insert" und"fail".

Beispiel (MongoDB Shell)

Das folgende Beispiel zeigt, wie der $merge Stagingbereich verwendet wird, um eine users Sammlung mit neuen Daten aus einer Eingabepipeline zu aktualisieren.

Erstellen Sie Beispieldokumente

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

Beispiel für eine Abfrage

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

Ausgabe

Nach dem Ausführen der $merge Pipeline wird die users Sammlung die folgenden Dokumente enthalten:

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

Codebeispiele

Um ein Codebeispiel für die Verwendung des $merge Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

Node.js

Hier ist ein Beispiel für die Verwendung des $merge-Operators in einer Node.js -Anwendung:

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

Hier ist ein Beispiel für die Verwendung des $merge-Operators in einer Python-Anwendung:

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