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 .