sql >> Databáze >  >> NoSQL >> MongoDB

Aktualizujte prvek v poli, pokud existuje, jinak vložte nový prvek do tohoto pole v MongoDb

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



  1. Systém nebyl zaveden s systemd jako init systém (PID 1). Nelze operovat

  2. Použijte Mongosniff k objasnění toho, co vaše MongoDB slyší a říká

  3. Přístup k MongoDB z Go

  4. Asynchronní provádění příkazů redis