W MongoDB db.collection.bulkWrite()
Metoda wykonuje wiele operacji zapisu z kontrolkami kolejności wykonywania.
Operacje zapisu zbiorczego wpływają na pojedynczą kolekcję. collection
część to nazwa kolekcji, na której mają zostać wykonane operacje.
Operacje zapisu zbiorczego
db.collection.bulkWrite()
Metoda może być użyta do wykonania następujących operacji zapisu:
insertOne
updateOne
updateMany
replaceOne
deleteOne
deleteMany
Każda z tych metod może być zawarta w wywołaniu db.collection.bulkWrite()
i możesz dołączyć różne metody w tym samym wywołaniu.
Przykład
Oto przykład użycia db.collection.bulkWrite()
do wykonywania operacji zapisu zbiorczego na kolekcji o nazwie pets
:
Załóżmy, że wstawiamy następujące dokumenty do kolekcji o nazwie pets
:
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" }
])
Możemy teraz użyć db.collection.bulkWrite()
aby wykonać operację zapisu zbiorczego na tej kolekcji.
Przykład:
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 }
} }
])
Wynik:
{ "acknowledged" : true, "deletedCount" : 1, "insertedCount" : 1, "matchedCount" : 2, "upsertedCount" : 0, "insertedIds" : { "0" : 6 }, "upsertedIds" : { } }
W tym przypadku wstawiliśmy jeden dokument, zaktualizowaliśmy inny dokument, usunęliśmy inny i zastąpiliśmy inny dokument.
db.collection.bulkWrite()
metoda zwraca co następuje:
- Boole'owskie
acknowledged
jakotrue
jeśli operacja została wykonana z problemem zapisu lubfalse
jeśli problem zapisu był wyłączony. - Liczba dla każdej operacji zapisu.
- Tabela zawierająca
_id
dla każdego pomyślnie wstawionego lub przesuniętego dokumentu.
Wyświetl wynik
Przyjrzyjmy się teraz ponownie dokumentom w kolekcji.
db.pets.find()
Wynik:
{ "_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" }
Widzimy, że wszystkie zmiany zostały wprowadzone zgodnie z opisem.
ordered
Parametr
Operacje zapisu zbiorczego mogą być uporządkowane lub nieuporządkowane. Domyślnie są uporządkowane.
Kolejność można określić za pomocą uporządkowanego parametru logicznego. Podanie wartości true
tworzy uporządkowaną listę operacji, ustawiając ją na false
sprawia, że jest to nieuporządkowana lista operacji.
Z uporządkowaną listą operacji, MongoDB wykonuje operacje szeregowo. Jeśli wystąpi błąd podczas przetwarzania jednej z operacji zapisu, MongoDB zwróci bez przetwarzania pozostałych operacji zapisu na liście.
Z nieuporządkowaną listą operacji, MongoDB może wykonywać operacje równolegle (chociaż nie jest to gwarantowane). Jeśli wystąpi błąd podczas przetwarzania jednej z operacji zapisu, MongoDB będzie kontynuować przetwarzanie pozostałych operacji zapisu na liście.
Więcej informacji
db.collection.bulkWrite()
metoda akceptuje również writeConcern
argument, który opisuje poziom potwierdzenia żądanego od MongoDB dla operacji zapisu.
Zobacz dokumentację MongoDB dla db.collection.bulkWrite()
aby uzyskać więcej informacji.