sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB bulkWrite()

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 som true om operationen kördes med skrivproblem eller false 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.


  1. Installera MongoDB på en Mac

  2. Är skillnaden mellan två listor igen?

  3. Hur man ställer in featureCompatibilityVersion i MongoDB

  4. Importera data till en MongoDB-instans