I MongoDB är db.collection.bulkWrite()
metod utför flera skrivoperationer med kontroller för exekveringsordning.
Massskrivningsoperationer påverkar en enskild samling. collection
del är namnet på den samling som man ska utföra operationerna mot.
Massskrivningsoperationer
db.collection.bulkWrite()
metod kan användas för att utföra följande skrivoperationer:
insertOne
updateOne
updateMany
replaceOne
deleteOne
deleteMany
Vilken som helst av dessa metoder kan inkluderas i ett anrop till db.collection.bulkWrite()
, och du kan inkludera olika metoder i samma anrop.
Exempel
Här är ett exempel på hur du använder db.collection.bulkWrite()
att utföra en bulkskrivoperation mot en samling som heter pets
:
Anta att vi infogar följande dokument i en samling som heter 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" }
])
Vi kan nu använda db.collection.bulkWrite()
för att utföra en bulkskrivoperation mot den samlingen.
Exempel:
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 }
} }
])
Resultat:
{ "acknowledged" : true, "deletedCount" : 1, "insertedCount" : 1, "matchedCount" : 2, "upsertedCount" : 0, "insertedIds" : { "0" : 6 }, "upsertedIds" : { } }
I det här fallet infogade vi ett dokument, uppdaterade ett annat dokument, tog bort ett annat och ersatte ett annat dokument.
db.collection.bulkWrite()
metod returnerar följande:
- En boolesk
acknowledged
somtrue
om operationen kördes med skrivproblem ellerfalse
om skrivproblem har inaktiverats. - Ett antal för varje skrivoperation.
- En array som innehåller ett
_id
för varje framgångsrikt infogat eller infogat dokument.
Visa resultatet
Låt oss nu ta en titt på dokumenten i samlingen igen.
db.pets.find()
Resultat:
{ "_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" }
Vi kan se att alla ändringar gjordes som specificerat.
Den ordered
Parameter
Bulk skrivoperationer kan antingen beställas eller oordnat. Som standard är de beställda.
Du kan specificera ordningen genom att använda den ordnade booleska parametern. Ange värdet true
gör det till en ordnad lista över operationer, sätter den till false
gör det till en oordnad lista över operationer.
Med en ordnad lista över operationer, utför MongoDB operationerna i serie. Om ett fel inträffar under bearbetningen av en av skrivoperationerna kommer MongoDB att återkomma utan att bearbeta några återstående skrivoperationer i listan.
Med en oordnad lista över operationer kan MongoDB utföra operationerna parallellt (även om detta inte är garanterat). Om ett fel uppstår under bearbetningen av en av skrivoperationerna kommer MongoDB att fortsätta att bearbeta återstående skrivoperationer i listan.
Mer information
db.collection.bulkWrite()
metoden accepterar också en writeConcern
argument, som beskriver nivån på bekräftelse som begärs från MongoDB för skrivoperationer.
Se MongoDB-dokumentationen för db.collection.bulkWrite()
för mer information.