Použijte $addToSet místo $push .
db.push.update(
{ _id: 5 },
{ $addToSet: { "quizzes": {"wk": 6.0, "score": 8.0}, "play": {"wk": 6.0, "score": 8.0} } }
)
UPRAVIT:
Neexistuje žádný jednoduchý vestavěný přístup pro podmíněnou aktualizaci dílčího dokumentu v poli pole podle konkrétní vlastnosti. Nicméně, malý trik může udělat práci provedením dvou příkazů za sebou.
Například:Pokud chceme aktualizovat quizzes pole s objektem { "wk": 7.0, "score": 8.0 } , můžeme to udělat ve dvou krocích:
Krok 1: $pull vyjměte dílčí dokumenty z quizzes pole, kde "wk": 7.0 . (Pokud nebude nalezen odpovídající dílčí dokument, nic se nestane ).
db.push.update(
{ _id: 5 },
{ $pull: { "quizzes": { "wk": 7.0 } } }
)
Krok 2: $addToSet dílčího dokumentu.
db.push.update(
{ _id: 5 },
{ $addToSet: { "quizzes": {"wk": 7.0, "score": 8.0} } }
)
Výše uvedené dva aktualizační příkazy můžete zkombinovat pomocí bulk.find().update()