MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB bulkWrite()

В 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() за повече информация.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose:CastError:Прехвърлянето към ObjectId не бе успешно за стойност [object Object] на път _id

  2. Свързване на MongoDB от мобилно или базирано на браузър приложение

  3. Мониторинг и управление на операциите на MongoDB 4.0 с ClusterControl

  4. Десериализиране на полиморфни типове с MongoDB C# драйвер

  5. MongoDB:mongoimport губи връзка при импортиране на големи файлове