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:
insertOneupdateOneupdateManyreplaceOnedeleteOnedeleteMany
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
acknowledgedsebagaitruejika operasi berjalan dengan masalah tulis ataufalsejika masalah penulisan dinonaktifkan. - Jumlah untuk setiap operasi tulis.
- Array yang berisi
_iduntuk 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.