Jeg er lige selv stødt ind i dette problem. Jeg var ikke i stand til at finde en et-opkaldsløsning, men jeg fandt en to-opkaldsløsning, der virker når du har en unik værdi i dine array-elementer . Brug $pull
kommando først, som fjerner elementer fra et array, og derefter $push
.
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
Dette bør fungere, når dokumentet ikke findes, når dokumentet eksisterer, men posten i arrayet ikke eksisterer, og når posten eksisterer.
Igen, dette virker kun, hvis du har noget, såsom id
felt i dette eksempel, der skal være unikt på tværs af elementer i arrayet.