Po prostu sam wpadłem na ten problem. Nie udało mi się znaleźć rozwiązania z jednym wywołaniem, ale znalazłem rozwiązanie z dwoma wywołaniami, które działa gdy masz unikalną wartość w elementach tablicy . Użyj $pull
najpierw polecenie, które usuwa elementy z tablicy, a następnie $push
.
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
Powinno to działać, gdy dokument nie istnieje, gdy dokument istnieje, ale wpis w tablicy nie istnieje i gdy wpis istnieje.
Ponownie, działa to tylko wtedy, gdy masz coś, na przykład id
w tym przykładzie, które powinno być unikalne we wszystkich elementach tablicy.