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:
insertOneupdateOneupdateManyreplaceOnedeleteOnedeleteMany
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
acknowledgedsomtrueom operationen kördes med skrivproblem ellerfalseom skrivproblem har inaktiverats. - Ett antal för varje skrivoperation.
- En array som innehåller ett
_idfö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.