Gunakan update()
metode atau save()
metode untuk memperbarui dokumen di MongoDB.
Di MongoDB, keduanya update()
metode dan save()
metode yang dapat digunakan untuk memperbarui dokumen.
update()
metode memperbarui nilai dalam dokumen atau dokumen yang ada, sedangkan save()
metode menggantikan dokumen dengan dokumen yang diteruskan sebagai parameter.
Namun, update()
metode juga dapat menggantikan seluruh dokumen, tergantung pada parameter yang diteruskan.
update()
Metode
Berikut ini contoh update()
metode.
Pertama, mari pilih catatan untuk diperbarui:
db.musicians.find({ _id: 6 }).pretty()
Hasil:
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
Jeff sebenarnya melakukan lebih dari sekadar bernyanyi. Jadi mari kita tambahkan beberapa instrumen lagi. Kami akan menggunakan $set
operator untuk memperbarui satu bidang.
db.musicians.update( { _id: 6 }, { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } } )
Hasil:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Sekarang jika kita melakukan query lain, kita melihat bahwa dokumen telah diperbarui seperti yang ditentukan:
db.musicians.find({ _id: 6 }).pretty()
Hasil:
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : [ "Vocals", "Guitar", "Sitar" ], "born" : 1969 }
Beberapa opsi lainnya:
- Jika kolom tidak ada,
$set
operator akan menambahkan bidang baru dengan nilai yang ditentukan, asalkan bidang baru tersebut tidak melanggar batasan jenis. - Anda juga dapat menggunakan
{ upsert: true }
untuk membuat dokumen baru saat tidak ada dokumen yang cocok dengan kueri. - Anda dapat menggunakan
{ multi: true }
untuk memperbarui beberapa dokumen yang memenuhi kriteria kueri. Secara default, opsi ini disetel kefalse
, jadi hanya satu dokumen yang diperbarui jika Anda tidak menyetelnya ketrue
.
The save()
Metode
save()
metode adalah persilangan antara update()
dan insert()
. Saat Anda menggunakan save()
metode, jika dokumen ada, itu akan diperbarui. Jika tidak ada, itu akan dibuat.
Jika Anda tidak menentukan _id
bidang, MongoDB akan membuat dokumen dengan _id
yang berisi ObjectId
nilai (sesuai insert()
).
Jika Anda menentukan _id
bidang, ia melakukan pembaruan dengan { upsert: true }
, artinya, ini membuat dokumen baru jika tidak ada dokumen yang cocok dengan kueri.
Saat ini kami tidak memiliki dokumen apa pun di
produser
our koleksi. Mari kita buat satu menggunakan save()
metode:
db.producers.save({ _id: 1, name: "Bob Rock" })
Hasil:
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 1 })
Sekarang jika kita mencari produsen koleksi, kami melihat catatan kami yang baru dibuat:
db.producers.find()
Hasil:
{ "_id" : 1, "name" : "Bob Rock" }