sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB bulkWrite()

I MongoDB er db.collection.bulkWrite() metoden udfører flere skriveoperationer med kontroller til rækkefølgen af ​​udførelse.

Masseskrivehandlinger påvirker en enkelt samling. collection del er navnet på den samling, som man udfører operationerne med.

Masseskriveoperationer

db.collection.bulkWrite() metode kan bruges til at udføre følgende skriveoperationer:

  • insertOne
  • updateOne
  • updateMany
  • replaceOne
  • deleteOne
  • deleteMany

Enhver af disse metoder kan inkluderes i et kald til db.collection.bulkWrite() , og du kan inkludere forskellige metoder i det samme opkald.

Eksempel

Her er et eksempel på brug af db.collection.bulkWrite() at udføre en masseskriveoperation mod en samling kaldet pets :

Antag, at vi indsætter følgende dokumenter i en samling kaldet 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 bruge db.collection.bulkWrite() at udføre en masseskriveoperation mod den samling.

Eksempel:

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 dette tilfælde indsatte vi et dokument, opdaterede et andet dokument, slettede et andet og erstattede et andet dokument.

db.collection.bulkWrite() metode returnerer følgende:

  • En boolesk acknowledged som true hvis operationen kørte med skrivebekymring eller false hvis skriveproblemer var deaktiveret.
  • Et antal for hver skriveoperation.
  • En matrix, der indeholder et _id for hvert vellykket indsat eller opsat dokumenter.

Se resultatet

Lad os nu tage et kig på dokumenterne 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, at alle ændringerne blev foretaget som specificeret.

Den ordered Parameter

Bulk skriveoperationer kan enten bestilles eller uordnes. Som standard er de bestilt.

Du kan angive rækkefølgen ved at bruge den ordnede booleske parameter. Angivelse af værdien true gør det til en ordnet liste over operationer, og sætter den til false gør det til en uordnet liste over operationer.

Med en ordnet liste over operationer udfører MongoDB operationerne serielt. Hvis der opstår en fejl under behandlingen af ​​en af ​​skriveoperationerne, vender MongoDB tilbage uden at behandle eventuelle resterende skriveoperationer på listen.

Med en uordnet liste over operationer kan MongoDB udføre operationerne parallelt (selvom dette ikke er garanteret). Hvis der opstår en fejl under behandlingen af ​​en af ​​skriveoperationerne, vil MongoDB fortsætte med at behandle resterende skriveoperationer på listen.

Flere oplysninger

db.collection.bulkWrite() metode accepterer også en writeConcern argument, som beskriver niveauet af bekræftelse, der anmodes om fra MongoDB for skriveoperationer.

Se MongoDB-dokumentationen for db.collection.bulkWrite() for mere information.


  1. Mongoose automatisk stigning

  2. MongoDB - Opdater eller indsæt objekt i array

  3. Selleri/Redis samme opgave udføres flere gange parallelt

  4. BSON bibliotek til java?