Berikut adalah struktur array
contact: {
phone: [
{
number: "+1786543589455",
place: "New Jersey",
createdAt: ""
}
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Di sini saya hanya tahu mongo id ( _id
) dan nomor telepon ( +1786543589455
) dan saya perlu menghapus seluruh elemen array yang sesuai dari dokumen. yaitu elemen nol yang diindeks dalam larik telepon dicocokkan dengan nomor telepon dan perlu menghapus elemen larik yang sesuai.
contact: {
phone: [
{
number: "+1986543589455",
place: "Houston",
createdAt: ""
}
]
}
Saya mencoba dengan metode pembaruan berikut
collection.update(
{ _id: id, 'contact.phone': '+1786543589455' },
{ $unset: { 'contact.phone.$.number': '+1786543589455'} }
);
Tapi itu menghapus number: +1786543589455
dari objek array dalam, bukan elemen yang diindeks nol dalam array telepon. Mencoba pull
juga tanpa hasil.
Bagaimana cara menghapus elemen array di mongodb?
{ $pull: { 'contact.phone.$': { 'contact.phone.$.number': '+1786543589455' } } }
dan{ $pull: { 'contact.phone': { 'contact.phone.$.number': '+1786543589455' } } }
tanpa hasil. Tidak mengerti cara kerja operator posisi di sini?.update()
memperbarui satu dokumen. Untuk memperbarui beberapa dokumen, gunakan{ multi: true }
opsi. Lihatdb.collection.update
dokumen untuk detailnya .Kode di bawah ini akan menghapus elemen objek lengkap dari array, di mana nomor teleponnya adalah '+1786543589455'
sumber
Dalam bahasa Mongoose: dari dokumen :
Lihat jawaban Leonid Beschastny untuk jawaban yang benar.
sumber
Anda cukup menggunakan $ pull untuk menghapus sub-dokumen. Operator $ pull menghapus semua instance dari nilai atau nilai yang cocok dengan kondisi tertentu dari array yang ada.
Ini akan menemukan dokumen induk Anda terhadap ID yang diberikan dan kemudian akan menghapus elemen dari subDocument yang cocok dengan kriteria yang diberikan.
Baca lebih lanjut tentang tarik di sini .
sumber
Jika Anda menggunakan Mongoose API dan ingin menarik objek sub / anak: Baca dokumen ini Jangan lupa untuk menggunakan save () setelah Anda selesai mengedit jika tidak, perubahan tidak akan disimpan ke database.
sumber