Ik liep zelf net tegen dit probleem aan. Ik heb geen oplossing met één oproep kunnen vinden, maar ik heb een oplossing met twee oproepen gevonden die werkt wanneer je een unieke waarde in je array-elementen hebt . Gebruik de $pull
commando eerst, dat elementen uit een array verwijdert, en dan $push
.
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
Dit zou moeten werken als het document niet bestaat, als het document wel bestaat maar het item in de array niet bestaat, en als het item wel bestaat.
Nogmaals, dit werkt alleen als je iets hebt, zoals de id
veld in dit voorbeeld, dat uniek moet zijn voor alle elementen van de array.