Di MongoDB db.collection.bulkWrite()
metode melakukan beberapa operasi tulis dengan kontrol untuk urutan eksekusi.
Operasi penulisan massal memengaruhi satu koleksi. collection
bagian adalah nama koleksi yang digunakan untuk melakukan operasi terhadap.
Operasi Tulis Massal
db.collection.bulkWrite()
metode dapat digunakan untuk melakukan operasi tulis berikut:
insertOne
updateOne
updateMany
replaceOne
deleteOne
deleteMany
Salah satu metode ini dapat disertakan dalam panggilan ke db.collection.bulkWrite()
, dan Anda dapat menyertakan metode berbeda dalam panggilan yang sama.
Contoh
Berikut ini contoh penggunaan db.collection.bulkWrite()
untuk melakukan operasi penulisan massal terhadap koleksi yang disebut pets
:
Misalkan kita memasukkan dokumen berikut ke dalam koleksi yang disebut 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" }
])
Sekarang kita dapat menggunakan db.collection.bulkWrite()
untuk melakukan operasi penulisan massal terhadap koleksi tersebut.
Contoh:
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 }
} }
])
Hasil:
{ "acknowledged" : true, "deletedCount" : 1, "insertedCount" : 1, "matchedCount" : 2, "upsertedCount" : 0, "insertedIds" : { "0" : 6 }, "upsertedIds" : { } }
Dalam hal ini, kami menyisipkan satu dokumen, memperbarui dokumen lain, menghapus dokumen lain, dan mengganti dokumen lain.
db.collection.bulkWrite()
metode mengembalikan yang berikut:
- Boolean
acknowledged
sebagaitrue
jika operasi berjalan dengan masalah tulis ataufalse
jika masalah penulisan dinonaktifkan. - Jumlah untuk setiap operasi tulis.
- Array yang berisi
_id
untuk setiap dokumen yang berhasil dimasukkan atau dimasukkan.
Lihat Hasilnya
Sekarang mari kita lihat kembali dokumen-dokumen dalam koleksi.
db.pets.find()
Hasil:
{ "_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" }
Kita dapat melihat bahwa semua perubahan dilakukan seperti yang ditentukan.
Yang ordered
Parameter
Operasi penulisan massal dapat dipesan atau tidak berurutan. Secara default, mereka dipesan.
Anda dapat menentukan urutan dengan menggunakan parameter boolean yang dipesan. Memberikan nilai true
membuatnya menjadi daftar operasi yang berurutan, menyetelnya ke false
membuatnya menjadi daftar operasi yang tidak berurutan.
Dengan daftar operasi yang diurutkan, MongoDB menjalankan operasi secara serial. Jika kesalahan terjadi selama pemrosesan salah satu operasi tulis, MongoDB akan kembali tanpa memproses operasi tulis yang tersisa dalam daftar.
Dengan daftar operasi yang tidak berurutan, MongoDB dapat menjalankan operasi secara paralel (walaupun ini tidak dijamin). Jika terjadi kesalahan selama pemrosesan salah satu operasi tulis, MongoDB akan terus memproses sisa operasi tulis dalam daftar.
Informasi Lebih Lanjut
db.collection.bulkWrite()
metode ini juga menerima writeConcern
argumen, yang menjelaskan tingkat pengakuan yang diminta dari MongoDB untuk operasi penulisan.
Lihat dokumentasi MongoDB untuk db.collection.bulkWrite()
untuk informasi lebih lanjut.