Jika Anda memiliki kumpulan dokumen di MongoDB yang berisi array, Anda dapat menambahkan nilai baru ke array tersebut jika diperlukan.
Bergantung pada kebutuhan spesifik Anda, Anda dapat menggunakan $push
operator atau $addToSet
operator.
$push
Operator
Misalkan kita memiliki koleksi yang disebut products
dengan dokumen sebagai berikut:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Topi" , "ukuran" :[ "S", "L", "XL" ] }{ "_id" :3, "produk" :"Tutup", "ukuran" :[ "M", "L" ] }Dan katakanlah kita ingin menambahkan nilai ke array di dokumen 3.
Kita bisa menggunakan
$push
dalam hubungannya denganupdate()
untuk menambahkan nilai:db.products.update( { _id: 3 }, { $push: { sizes: "XL" } } )
Mari kita lihat kembali koleksinya untuk memverifikasi perubahannya:
db.products.find()
Hasil:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L" ] }{ "_id" :2, "product" :"Topi" , "ukuran" :[ "S", "L", "XL" ] }{ "_id" :3, "produk" :"Tutup", "ukuran" :[ "M", "L", "XL" ] }Kita dapat melihat bahwa nilai
XL
telah ditambahkan ke larik di dokumen 3.
$push
operator juga dapat digunakan dengan berbagai pengubah, seperti$position
,$sort
, dan$slice
.Anda juga dapat menambahkan beberapa nilai ke array dengan menggunakan
$each
pengubah.Lihat MongoDB
$push
sebagai contoh.
$addToSet
Operator
$addToSet
operator bekerja dengan cara yang mirip dengan$push
, kecuali untuk beberapa hal:
- Jika nilai yang Anda coba tambahkan sudah ada dalam larik, nilai tersebut tidak akan ditambahkan.
$position
,$sort
, dan$slice
pengubah tidak dapat digunakan dengan$addToSet
.
Misalkan koleksi kita terlihat seperti ini:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Topi", "ukuran" :[ "S", "L", "XL" ] }{ "_id" :3, "produk" :"Cap", "ukuran" :[ "S", "M" , "L", "XL" ] }
Mari kita masukkan beberapa nilai ke array di dokumen 2:
db.products.update(
{ _id: 2 },
{
$addToSet: {
sizes: {
$each: [ "XXL", "XXXL" ]
}
}
}
)
Sekarang mari kita periksa kembali koleksinya:
db.products.find()
Hasil:
{ "_id" :1, "product" :"Bat", "sizes" :[ "S", "M", "L", "XL" ] }{ "_id" :2, "product" :"Topi", "ukuran" :[ "S", "L", "XL", "XXL", "XXXL" ] }{ "_id" :3, "produk" :"Cap", "sizes" :[ "S", "M", "L", "XL" ] }
Kita dapat melihat bahwa dua nilai ditambahkan ke larik di dokumen 2 seperti yang diharapkan.
Contoh ini menggunakan $each
pengubah, yang juga dapat Anda gunakan dengan $push
operator.
Saya hanya menggunakan $each
pengubah karena saya menambahkan beberapa nilai. Jika saya hanya menggunakan satu nilai, saya bisa menghilangkan $each
pengubah, dan sintaksnya akan terlihat lebih seperti $push
di atas contoh.
Seperti yang disebutkan, jika nilainya sudah ada, itu tidak akan ditambahkan. Juga, dengan kedua operator, jika Anda menambahkan larik, seluruh larik akan ditambahkan sebagai nilai terpisah di dalam larik yang ada.
Lihat MongoDB $addToSet
untuk lebih banyak contoh.