Di MongoDB, Anda dapat menggunakan $pop
operator untuk menghapus elemen pertama atau terakhir dari array.
Gunakan $pop
dalam hubungannya dengan metode seperti update()
untuk memperbarui dokumen yang ditentukan dengan perubahan.
Gunakan -1
untuk menghapus elemen pertama, dan 1
untuk menghapus yang terakhir.
Contoh
Misalkan kita memiliki koleksi yang disebut products
dengan dokumen sebagai berikut:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Hapus Elemen Pertama
Kita dapat menghapus elemen pertama dari array di dokumen 1 seperti ini:
db.products.update(
{ _id: 1 },
{ $pop: { sizes: -1 } }
)
Keluaran:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Pesan itu memberi tahu kita bahwa satu dokumen cocok dan satu (yaitu dokumen yang sama) telah dimodifikasi.
Yuk intip koleksinya sekarang:
db.products.find()
Hasil:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Kita dapat melihat bahwa elemen pertama dari array di dokumen 1 telah dihapus.
Hapus Elemen Terakhir
Sekarang mari kita hapus elemen terakhir dari array di dokumen 2:
db.products.update(
{ _id: 2 },
{ $pop: { sizes: 1 } }
)
Keluaran:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Sekarang mari kita periksa kembali koleksinya:
db.products.find()
Hasil:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L", "XL" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }
Kita dapat melihat bahwa elemen terakhir telah dihapus dari array di dokumen 2.
Perbarui Semua Dokumen
Berikut adalah contoh yang menggunakan updateMany()
metode untuk memperbarui semua dokumen:
db.products.updateMany(
{ },
{ $pop: { sizes: 1 } }
)
Keluaran:
{ "acknowledged" : true, "matchedCount" : 3, "modifiedCount" : 3 }
Dan periksa kembali koleksinya:
db.products.find()
Hasil:
{ "_id" : 1, "prod" : "Bat", "sizes" : [ "M", "L" ] } { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M" ] } { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M" ] }
Atau, Anda dapat menggunakan update()
metode untuk memperbarui banyak dokumen dengan menentukan multi: true
.