MongoDB $set
operator pembaruan menggantikan nilai bidang dengan nilai yang ditentukan.
Ini digunakan bersama dengan operasi pembaruan, misalnya saat menggunakan update()
metode untuk memperbarui dokumen.
Contoh
Misalkan kita memiliki koleksi yang disebut dogs
dengan dokumen berikut:
{ "_id" : 1, "name" : "Wag", "weight" : 20 }
Dan misalkan kita ingin mengubah berat badan anjing. Kita dapat menjalankan update()
berikut ini:perintah untuk memperbarui bobot:
db.dogs.update(
{ _id: 1 },
{
$set: { weight: 30 }
}
)
Ini akan menghasilkan output berikut:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Yang memberi tahu kita bahwa satu dokumen dicocokkan dan dimodifikasi.
Yuk cek koleksinya:
db.dogs.find()
Hasil:
{ "_id" : 1, "name" : "Wag", "weight" : 30 }
Kita dapat melihat bahwa bobot telah diperbarui ke nilai yang ditentukan.
Ini juga memungkinkan untuk menambah nilai dengan jumlah yang ditentukan, tetapi untuk melakukannya kita perlu menggunakan $inc
operator alih-alih $set
.
Tapi artikel ini adalah tentang $set
operator, jadi mari kita lanjutkan.
Saat Bidang Tidak Ada
Jika bidang yang Anda coba perbarui tidak ada, bidang tersebut akan ditambahkan ke dokumen dengan nilai yang ditentukan.
Contoh:
db.dogs.update(
{ _id: 1 },
{
$set: { height: 40 }
}
)
Keluaran:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kita dapat melihat bahwa satu dokumen dicocokkan dan dimodifikasi.
Yuk cek lagi koleksinya.
db.dogs.find()
Hasil:
{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40 }
Jadi sekarang dokumen menyertakan height
bidang dengan nilai yang ditentukan.
Dokumen Tersemat
Anda dapat memperbarui nilai dalam dokumen yang disematkan dengan menggunakan notasi titik. Jika jalur yang ditentukan belum ada, jalur tersebut akan dibuat.
Contoh:
db.dogs.update(
{ _id: 1 },
{
$set: {
"meals.breakfast": "Fish",
"meals.lunch": "Chicken",
"meals.dinner": "Beef"
}
}
)
Keluaran:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Mari gunakan findOne()
untuk mengembalikan dokumen:
db.dogs.findOne()
Hasil:
{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40, "meals" : { "breakfast" : "Fish", "dinner" : "Beef", "lunch" : "Chicken" } }
Kita dapat melihat bahwa dokumen yang disematkan telah ditambahkan seperti yang ditentukan.
Array
Anda dapat memperbarui data dalam array dengan menggunakan notasi titik saat menentukan indeks elemen yang ingin Anda perbarui.
Misalkan kita memiliki dokumen berikut:
{ "_id" : 1, "name" : "Wag", "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }
Mari perbarui dua elemen larik, dan nama anjing.
db.dogs.update({
_id: 1
}, {
$set: {
"name": "Bark",
"awards.0": "Bottom Dog",
"awards.1": "Worst Dog"
}
})
Hasil:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kita dapat melihat bahwa satu dokumen dicocokkan dan dimodifikasi.
Dan sekarang lihat dokumennya.
db.dogs.findOne()
Hasil:
{ "_id" : 1, "name" : "Bark", "awards" : [ "Bottom Dog", "Worst Dog", "Biggest Dog" ] }