MongoDB Perbarui() Dokumen dengan Contoh
\
โก Ringkasan Cerdas
MongoDB Operasi Update() pada dokumen memodifikasi catatan yang sudah ada dalam sebuah koleksi. Metode update() menerima kondisi untuk memilih dokumen dan pengubah seperti $set untuk mengubah nilai bidang, dan opsi multi memperbarui beberapa dokumen yang cocok sekaligus.

Pembaruan dokumen dasar
MongoDB menyediakan perintah update() untuk memperbarui dokumen koleksi. Untuk memperbarui hanya dokumen yang ingin Anda perbarui, Anda dapat menambahkan kriteria pada pernyataan pembaruan sehingga hanya dokumen terpilih yang diperbarui.
Parameter dasar pada perintah tersebut adalah kondisi dokumen mana yang perlu diperbarui, dan selanjutnya adalah modifikasi yang perlu dilakukan.
Contoh berikut menunjukkan bagaimana hal ini dapat dilakukan.
Langkah 1) Keluarkan perintah pembaruan
Langkah 2) Pilih kondisi yang ingin Anda gunakan untuk memutuskan dokumen mana yang perlu diperbarui. Dalam contoh kita, kita ingin memperbarui dokumen yang memiliki ID Karyawan 22.
Langkah 3) Gunakan perintah set untuk mengubah Nama Bidang
Langkah 4) Pilih Nama Bidang mana yang ingin Anda ubah dan masukkan nilai baru yang sesuai.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
Jika perintah berhasil dijalankan, Output berikut akan ditampilkan
Keluaran:
Outputnya dengan jelas menunjukkan bahwa satu catatan cocok dengan kondisi dan karenanya nilai bidang yang relevan telah diubah.
MongoDB Memperbarui Operatorso
Operator $set adalah cara paling umum untuk mengubah sebuah field, tetapi MongoDB menyediakan beberapa operator pembaruan untuk berbagai kebutuhan. Anda dapat menempatkannya di argumen kedua dari update() bersamaan atau sebagai pengganti $set:
- $set: Mengatur nilai suatu kolom, dan membuat kolom tersebut jika belum ada.
- $tidak disetel: Menghapus seluruh kolom dari dokumen.
- $inc: Menambah atau mengurangi nilai numerik suatu kolom dengan jumlah tertentu.
- $mul: Mengalikan nilai dari suatu kolom numerik.
- $ganti nama: Mengganti nama kolom menjadi nama baru.
- $mendorong: Menambahkan nilai ke kolom array.
- $tarik: Menghapus nilai yang cocok dari suatu kolom array.
Setiap operator hanya menargetkan kolom yang Anda sebutkan, sehingga bagian dokumen lainnya tetap tidak berubah. Anda dapat menggabungkan beberapa operator dalam satu panggilan update() untuk memodifikasi beberapa kolom sekaligus, yang menjaga agar pembaruan tetap akurat dan menghindari penimpaan data yang ingin Anda pertahankan.
Memperbarui Beberapa Nilai
Untuk memastikan bahwa beberapa dokumen/dokumen massal diperbarui secara bersamaan MongoDB Anda perlu menggunakan opsi multi karena jika tidak, secara default hanya satu dokumen yang dimodifikasi dalam satu waktu.
Contoh berikut menunjukkan cara memperbarui banyak dokumen.
Dalam contoh ini, pertama-tama kita akan mencari dokumen yang memiliki ID Karyawan โ1โ dan mengubah nama Karyawan dari โMartinโ menjadi โNewMartinโ
Langkah 1) Keluarkan perintah pembaruan
Langkah 2) Pilih kondisi yang ingin Anda gunakan untuk memutuskan dokumen mana yang perlu diperbarui. Dalam contoh kita, kita ingin dokumen yang memiliki ID Karyawan โ1โ diperbarui.
Langkah 3) Pilih Nama Bidang mana yang ingin Anda ubah dan masukkan nilai barunya.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
Jika perintah berhasil dijalankan dan jika Anda menjalankan "Temukan" perintah untuk mencari dokumen dengan id Karyawan sebagai 22 Anda akan melihat Output berikut akan ditampilkan
Keluaran:
Outputnya dengan jelas menunjukkan bahwa satu catatan cocok dengan kondisi dan karenanya nilai bidang yang relevan telah diubah.
Cara Memperbarui/Memasukkan Dokumen MongoDB
Upsert adalah kombinasi dari update dan insert. Saat Anda mengaktifkannya, MongoDB Memperbarui dokumen yang sesuai dengan kondisi, atau menyisipkan dokumen baru jika tidak ditemukan kecocokan. Ini berguna ketika Anda tidak yakin apakah suatu catatan sudah ada.
Untuk melakukan upsert, tambahkan opsi upsert yang diatur ke true sebagai argumen ketiga dari update():
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
Inilah yang terjadi:
- Jika dokumen dengan Employeeid 5 ada, MongoDB memperbarui kolom EmployeeName-nya.
- Jika dokumen tersebut tidak ada, MongoDB menyisipkan dokumen baru dengan Employeeid 5 dan EmployeeName โSofisebuah".
Upsert sangat berguna untuk penghitung, pengaturan, dan alur kerja apa pun di mana Anda ingin membuat catatan pada penggunaan pertama dan memperbaruinya setelahnya. Dalam sistem modern MongoDBPerilaku yang sama juga tersedia melalui updateOne() dan updateMany() dengan memberikan {upsert: true} pada opsi. Berhati-hatilah dengan kondisi ini, karena filter yang luas dikombinasikan dengan upsert dapat membuat dokumen yang tidak terduga.
updateOne() vs updateMany() vs replaceOne()
Metode update() sekarang merupakan perintah lama. Modern MongoDB Para pengemudi membagi perilaku tersebut menjadi tiga metode yang lebih jelas. Tabel di bawah ini membandingkan ketiganya:
| metode | Apa yang dilakukannya | Dokumen yang terpengaruh |
|---|---|---|
| pembaruanSatu() | Menerapkan operator pembaruan ke dokumen yang cocok pertama. | Satu |
| perbaruiBanyak() | Menerapkan operator pembaruan ke setiap dokumen yang cocok. | Banyak |
| replaceOne() | Mengganti seluruh dokumen yang cocok pertama dengan dokumen baru. | Satu |
Gunakan updateOne() untuk perubahan tunggal yang ditargetkan, updateMany() sebagai pengganti opsi multi yang lama, dan replaceOne() ketika Anda ingin mengganti seluruh dokumen daripada hanya mengedit kolom. Metode-metode ini mengembalikan hasil yang jelas yang menunjukkan berapa banyak dokumen yang cocok dan berapa banyak yang dimodifikasi, yang membuatnya lebih aman dan lebih mudah untuk di-debug daripada update().


