sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB bulkWrite()

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 jako true pokud operace proběhla s obavami o zápis nebo false 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í.


  1. Vytvořte superuživatele v mongo

  2. MongoDB $bsonSize

  3. Chyba při spouštění skriptu Lua z klienta redis

  4. Možnost Redis-cli --csv (export do csv)