sql >> Database >  >> NoSQL >> MongoDB

Update element in array als het bestaat anders voeg nieuw element in die array in MongoDb

Gebruik $addToSet in plaats van $push .

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 6.0, "score": 8.0}, "play": {"wk": 6.0, "score": 8.0} } }
)

BEWERKEN:

Er is geen eenvoudige ingebouwde benadering voor het bijwerken van voorwaardelijke subdocumenten in een arrayveld, door specifieke eigenschap. Een klein trucje kan het werk echter doen door twee opdrachten achter elkaar uit te voeren.

Bijvoorbeeld:Als we de quizzes willen bijwerken veld met het object { "wk": 7.0, "score": 8.0 } , we kunnen het in twee stappen doen:

Stap-1: $pull subdocumenten uit de quizzes array waar "wk": 7.0 . (Er gebeurt niets als het overeenkomende subdocument niet wordt gevonden ).

db.push.update(
    { _id: 5 },
    { $pull: { "quizzes": { "wk": 7.0 } } }
)

Stap-2: $addToSet het subdocument.

db.push.update(
    { _id: 5 },
    { $addToSet: { "quizzes": {"wk": 7.0, "score": 8.0} } }
)

U kunt de bovenstaande twee update-commando's combineren met de bulk.find().update()



  1. Percentage OK-condities overeenkomend in mongodb

  2. MongoDB ontspant meerdere arrays

  3. MongoDB $dateFromString Formaatspecificaties

  4. Hoe SCAN te gebruiken met de MATCH-optie in Predis