Saya sendiri mengalami masalah ini. Saya tidak dapat menemukan solusi satu panggilan, tetapi saya menemukan solusi dua panggilan yang berfungsi ketika Anda memiliki nilai unik dalam elemen array . Gunakan $pull
perintah terlebih dahulu, yang menghapus elemen dari larik, lalu $push
.
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
Ini akan berfungsi saat dokumen tidak ada, saat dokumen ada tetapi entri dalam larik tidak ada, dan saat entri ada.
Sekali lagi, ini hanya berfungsi jika Anda memiliki sesuatu, seperti id
bidang dalam contoh ini, yang harus unik di seluruh elemen larik.