В MongoDB db.collection.bulkWrite()
методът изпълнява множество операции на запис с контроли за реда на изпълнение.
Операциите за групово записване засягат една колекция. collection
part е името на колекцията, с която да се извършват операциите.
Операции за групово записване
db.collection.bulkWrite()
методът може да се използва за извършване на следните операции за запис:
insertOne
updateOne
updateMany
replaceOne
deleteOne
deleteMany
Всеки от тези методи може да бъде включен в извикване на 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()
за повече информация.