MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Die Daten in mongodb konnten nicht aktualisiert werden

Ihr update -Anweisung ist falsch, sie enthält falsch platzierte Argumente – Sie setzen mehrere $set Operationen und Optionen als verschiedene Parameter für die Aktualisierungsmethode; Sie sollten sich unter separaten festgelegten Aktualisierungsparametern befinden. Die korrekte Node.js-Syntax ist:

update(selector, document, options, callback)

wobei selector ist ein Objekt, das der Selektor/die Abfrage für die Aktualisierungsoperation ist, document ist auch ein Objekt, das das Update-Dokument und schließlich ein options ist Objekt, das standardmäßig null ist und die optionalen Update-Einstellungen hat.

Hier machst du

update(selector, document, selector, document, options, options, callback)

In diesem Fall aktualisiert Mongo die Sammlung mit den ersten beiden Parametern als korrekt und gibt natürlich den Fehler aus

weil Sie zu viele falsche Parameter angegeben haben.

Außerdem verwenden Sie den Positionsoperator falsch. Es sollte Teil des zu aktualisierenden Dokuments sein, nicht in der Abfrage.

Für die korrekte Implementierung folgen Sie diesem Update

db.getCollection('profiles').update(
    /* selector  */
    {
        "_id": ObjectId("57a9aa24e93864e02d91283c"),
        "ratings.round": 1
    }, 
    /* update document */
    {
        "$set": {
            "presentRound": 2,
            "interviewStatus": "in process",
            "scheduleInterviewStatus": false,
            "ratings.$.roundStatus": "selected"    
        }
    },
    /* optional settings */
    { upsert: true, multi: true }
)