Di MongoDB, Anda dapat menggunakan $unset operator pembaruan bidang untuk menghapus bidang sepenuhnya dari dokumen.
$unset operator dirancang khusus untuk menghapus bidang dan nilainya dari dokumen.
Contoh
Misalkan kita memiliki koleksi yang disebut dogs dengan dokumen sebagai berikut:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Dan misalkan kita ingin menghapus type bidang (dan nilainya masing-masing) dari semua dokumen.
Kita bisa melakukan ini:
db.dogs.updateMany(
{ },
{ $unset: { type: "" } }
) Keluaran:
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 } Ini memberi tahu kami bahwa empat dokumen cocok (karena kami menggunakan dokumen kueri kosong sebagai argumen pertama) dan empat telah diperbarui.
Sekarang mari kita periksa kembali koleksinya:
db.dogs.find() Hasil:
{ "_id" : 1, "name" : "Wag", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "weight" : 30 }
Kita dapat melihat bahwa type bidang telah sepenuhnya dihapus dari setiap dokumen.
Perhatikan bahwa nilai yang ditentukan dalam $unset ekspresi (yaitu “”) tidak memengaruhi operasi.
Hapus Beberapa Bidang
Anda dapat menentukan beberapa bidang yang akan dihapus dengan memisahkannya dengan koma.
Contoh:
db.dogs.updateMany(
{ },
{ $unset: { name: "", weight: "" } }
) Keluaran:
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 } Cek koleksinya:
db.dogs.find() Hasil:
{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 6 }
{ "_id" : 7 }
Sekarang hanya _id bidang yang tersisa.
Dokumen Tersemat
Anda dapat menggunakan notasi titik untuk menghapus bidang dari dokumen yang disematkan.
Misalkan kita memiliki koleksi yang disebut pets dengan dokumen berikut:
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
Dan misalkan kita ingin menghapus awards bidang dari dokumen.
Kita bisa melakukan ini:
db.pets.updateMany(
{ _id: 1 },
{ $unset: { "details.awards": "" } }
) Keluaran:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } Sekarang mari kita periksa dokumennya:
db.pets.findOne() Hasil:
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20
}
}
awards bidang dan nilainya (yang merupakan dokumen yang disematkan) telah dihapus dari dokumen.