V MongoDB db.collection.bulkWrite()
metoda provádí více operací zápisu s ovládacími prvky pro pořadí provádění.
Operace hromadného zápisu ovlivňují jednu kolekci. collection
část je název kolekce, se kterou se mají operace provádět.
Operace hromadného zápisu
db.collection.bulkWrite()
metodu lze použít k provedení následujících operací zápisu:
insertOne
updateOne
updateMany
replaceOne
deleteOne
deleteMany
Kteroukoli z těchto metod lze zahrnout do volání db.collection.bulkWrite()
a do stejného volání můžete zahrnout různé metody.
Příklad
Zde je příklad použití db.collection.bulkWrite()
k provedení operace hromadného zápisu proti kolekci nazvané pets
:
Předpokládejme, že vložíme následující dokumenty do kolekce nazvané 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" }
])
Nyní můžeme použít db.collection.bulkWrite()
k provedení operace hromadného zápisu proti této kolekci.
Příklad:
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 }
} }
])
Výsledek:
{ "acknowledged" : true, "deletedCount" : 1, "insertedCount" : 1, "matchedCount" : 2, "upsertedCount" : 0, "insertedIds" : { "0" : 6 }, "upsertedIds" : { } }
V tomto případě jsme vložili jeden dokument, aktualizovali jiný dokument, odstranili další a nahradili jiný dokument.
db.collection.bulkWrite()
metoda vrací následující:
- Logická hodnota
acknowledged
jakotrue
pokud operace proběhla s obavami o zápis nebofalse
pokud bylo zakázáno psaní. - Počet pro každou operaci zápisu.
- Pole obsahující
_id
za každý úspěšně vložený nebo upsertovaný dokument.
Zobrazit výsledek
Nyní se znovu podíváme na dokumenty ve sbírce.
db.pets.find()
Výsledek:
{ "_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" }
Vidíme, že všechny změny byly provedeny podle specifikace.
ordered
Parametr
Operace hromadného zápisu mohou být uspořádané nebo neuspořádané. Ve výchozím nastavení jsou seřazeny.
Pořadí můžete určit pomocí booleovského parametru order. Zadání hodnoty true
udělá z něj uspořádaný seznam operací a nastaví ho na false
dělá z něj neuspořádaný seznam operací.
S uspořádaným seznamem operací MongoDB provádí operace sériově. Pokud dojde k chybě během zpracování jedné z operací zápisu, MongoDB se vrátí bez zpracování jakýchkoli zbývajících operací zápisu v seznamu.
S neuspořádaným seznamem operací může MongoDB provádět operace paralelně (ačkoli to není zaručeno). Pokud dojde k chybě během zpracování jedné z operací zápisu, MongoDB bude pokračovat ve zpracování zbývajících operací zápisu v seznamu.
Další informace
db.collection.bulkWrite()
metoda také přijímá writeConcern
argument, který popisuje úroveň potvrzení požadovaného od MongoDB pro operace zápisu.
Viz dokumentaci MongoDB pro db.collection.bulkWrite()
pro více informací.