In MongoDB die db.collection.bulkWrite()
-Methode führt mehrere Schreibvorgänge mit Steuerelementen für die Ausführungsreihenfolge durch.
Massenschreibvorgänge wirken sich auf eine einzelne Sammlung aus. Die collection
part ist der Name der Sammlung, mit der die Operationen durchgeführt werden sollen.
Massenschreibvorgänge
Die db.collection.bulkWrite()
Methode kann verwendet werden, um die folgenden Schreiboperationen auszuführen:
insertOne
updateOne
updateMany
replaceOne
deleteOne
deleteMany
Jede dieser Methoden kann in einen Aufruf von db.collection.bulkWrite()
eingeschlossen werden , und Sie können verschiedene Methoden in denselben Aufruf einbeziehen.
Beispiel
Hier ist ein Beispiel für die Verwendung von db.collection.bulkWrite()
um einen Massenschreibvorgang für eine Sammlung namens pets
durchzuführen :
Angenommen, wir fügen die folgenden Dokumente in eine Sammlung namens pets
ein :
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog", weight: 20 },
{ _id: 2, name: "Bark", type: "Dog", weight: 10 },
{ _id: 3, name: "Meow", type: "Cat" },
{ _id: 4, name: "Scratch", type: "Cat" },
{ _id: 5, name: "Bruce", type: "Bat" }
])
Wir können jetzt db.collection.bulkWrite()
verwenden um einen Massenschreibvorgang für diese Sammlung durchzuführen.
Beispiel:
db.pets.bulkWrite([
{ insertOne: { "document": { "_id": 6, "name": "Bubbles", "type": "Fish" }}},
{ updateOne : {
"filter" : { "_id" : 2 },
"update" : { $set : { "weight" : 15 } }
} },
{ deleteOne : { "filter" : { "_id" : 5 } } },
{ replaceOne : {
"filter" : { "_id" : 4 },
"replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 }
} }
])
Ergebnis:
{ "acknowledged" : true, "deletedCount" : 1, "insertedCount" : 1, "matchedCount" : 2, "upsertedCount" : 0, "insertedIds" : { "0" : 6 }, "upsertedIds" : { } }
In diesem Fall haben wir ein Dokument eingefügt, ein anderes Dokument aktualisiert, ein anderes gelöscht und ein anderes Dokument ersetzt.
Die db.collection.bulkWrite()
-Methode gibt Folgendes zurück:
- Ein boolescher
acknowledged
alstrue
ob die Operation mit Write Concern oderfalse
ausgeführt wurde wenn Schreibschutz deaktiviert war. - Eine Zählung für jeden Schreibvorgang.
- Ein Array, das eine
_id
enthält für jedes erfolgreich eingefügte oder aktualisierte Dokument.
Ergebnis anzeigen
Schauen wir uns nun noch einmal die Dokumente in der Sammlung an.
db.pets.find()
Ergebnis:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 15 } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 } { "_id" : 6, "name" : "Bubbles", "type" : "Fish" }
Wir können sehen, dass alle Änderungen wie angegeben vorgenommen wurden.
Der ordered
Parameter
Massenschreiboperationen können entweder geordnet oder ungeordnet sein. Standardmäßig sind sie geordnet.
Sie können die Reihenfolge angeben, indem Sie den geordneten booleschen Parameter verwenden. Bereitstellen eines Werts von true
macht es zu einer geordneten Liste von Operationen, indem es auf false
gesetzt wird macht es zu einer ungeordneten Liste von Operationen.
Mit einer geordneten Liste von Operationen führt MongoDB die Operationen seriell aus. Wenn während der Verarbeitung einer der Schreiboperationen ein Fehler auftritt, kehrt MongoDB zurück, ohne verbleibende Schreiboperationen in der Liste zu verarbeiten.
Mit einer ungeordneten Liste von Operationen kann MongoDB die Operationen parallel ausführen (obwohl dies nicht garantiert ist). Wenn während der Verarbeitung einer der Schreiboperationen ein Fehler auftritt, verarbeitet MongoDB die verbleibenden Schreiboperationen in der Liste weiter.
Weitere Informationen
Die db.collection.bulkWrite()
-Methode akzeptiert auch ein writeConcern
-Argument, das die Bestätigungsstufe beschreibt, die von MongoDB für Schreibvorgänge angefordert wird.
Siehe die MongoDB-Dokumentation für db.collection.bulkWrite()
für weitere Informationen.