В MongoDB db.collection.bulkWrite() методът изпълнява множество операции на запис с контроли за реда на изпълнение.
Операциите за групово записване засягат една колекция. collection part е името на колекцията, с която да се извършват операциите.
Операции за групово записване
db.collection.bulkWrite() методът може да се използва за извършване на следните операции за запис:
insertOneupdateOneupdateManyreplaceOnedeleteOnedeleteMany
Всеки от тези методи може да бъде включен в извикване на db.collection.bulkWrite() , и можете да включите различни методи в едно и също извикване.
Пример
Ето пример за използване на db.collection.bulkWrite() за извършване на операция за групово записване срещу колекция, наречена pets :
Да предположим, че вмъкваме следните документи в колекция, наречена 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" }
])
Вече можем да използваме db.collection.bulkWrite() за извършване на операция за групово записване срещу тази колекция.
Пример:
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 }
} }
]) Резултат:
{
"acknowledged" : true,
"deletedCount" : 1,
"insertedCount" : 1,
"matchedCount" : 2,
"upsertedCount" : 0,
"insertedIds" : {
"0" : 6
},
"upsertedIds" : {
}
} В този случай вмъкнахме един документ, актуализирахме друг документ, изтрихме друг и заменихме друг документ.
db.collection.bulkWrite() метод връща следното:
- Булева
acknowledgedкатоtrueако операцията се изпълняваше със загриженост за запис илиfalseако загрижеността за запис е деактивирана. - Брой за всяка операция на запис.
- Масив, съдържащ
_idза всеки успешно поставен или поставен документ.
Вижте резултата
Сега нека отново да разгледаме документите в колекцията.
db.pets.find() Резултат:
{ "_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" } Можем да видим, че всички промени са направени, както е посочено.
ordered Параметър
Операциите за групово записване могат да бъдат подредени или неподредени. По подразбиране те са подредени.
Можете да посочите реда, като използвате подредения булев параметър. Предоставяне на стойност true го прави подреден списък с операции, като го задава на false го прави неподреден списък с операции.
С подреден списък с операции, MongoDB изпълнява операциите последователно. Ако възникне грешка по време на обработката на една от операциите на запис, MongoDB ще се върне, без да обработва останалите операции на запис в списъка.
С неподреден списък с операции, MongoDB може да изпълнява операциите паралелно (въпреки че това не е гарантирано). Ако възникне грешка по време на обработката на една от операциите на запис, MongoDB ще продължи да обработва останалите операции за запис в списъка.
Повече информация
db.collection.bulkWrite() методът също така приема writeConcern аргумент, който описва нивото на потвърждение, поискано от MongoDB за операции по запис.
Вижте документацията на MongoDB за db.collection.bulkWrite() за повече информация.