Самият аз просто се сблъсках с този проблем. Не успях да намеря решение с едно обаждане, но намерих решение с две обаждания, което работи, когато имате уникална стойност в елементите на масива . Използвайте $pull
команда първо, която премахва елементи от масив, а след това $push
.
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
Това трябва да работи, когато документът не съществува, когато документът съществува, но записът в масива не съществува, и когато записът съществува.
Отново, това работи само ако имате нещо, като id
поле в този пример, което трябва да е уникално за елементите на масива.