Je viens de rencontrer ce problème moi-même. Je n'ai pas pu trouver de solution à un appel, mais j'ai trouvé une solution à deux appels qui fonctionne lorsque vous avez une valeur unique dans les éléments de votre tableau . Utilisez le $pull
commande d'abord, qui supprime les éléments d'un tableau, puis $push
.
db.soup.update({
"tester":"tom"
}, {
$pull: {
'array': {
"id": "3"
}
}
})
db.soup.update({
"tester":"tom"
}, {
$push: {
'array': {
"id": "3",
"letter": "d"
}
}
})
Cela devrait fonctionner lorsque le document n'existe pas, lorsque le document existe mais que l'entrée dans le tableau n'existe pas et lorsque l'entrée existe.
Encore une fois, cela ne fonctionne que si vous avez quelque chose, comme le id
dans cet exemple, qui doit être unique parmi les éléments du tableau.