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