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()