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 auf der Grundlage der Übereinstimmungsbedingung zwischen den Eingabedokumenten und der Zielsammlung verschiedene Aktionen ausführen, 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, in der die Eingabedokumente zusammengeführt werden sollen. -
on: (erforderlich) Die Felder, die als Übereinstimmungsbedingung 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". Amazon DocumentDB unterstützt nicht die Angabe einer Aggregationspipeline als Wert.whenMatched -
whenNotMatched: (optional) Die Aktion, die ausgeführt werden soll, wenn das Eingabedokument keinem Dokument in der Zielsammlung entspricht. Unterstützte Werte sind:"insert"und"fail". -
bypassDocumentValidation: (optional) Wenn auf gesetzt, umgehen Dokumentetrue, die von der$mergeStufe in die Zielsammlung geschrieben werden, alle für diese Sammlung definierten Schemaüberprüfungsregeln ($jsonSchema). Die Standardeinstellung istfalse, wodurch die Validierungsregeln der Zielsammlung durchgesetzt werden. Dies wird in Amazon DocumentDB 8.0 unterstützt.
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: