Vaše aktualizace update
prohlášení je nesprávné, obsahuje nesprávně umístěné argumenty – vkládáte více $set
operace a možnosti jako různé parametry metody aktualizace; měly by být pod samostatnými určenými parametry aktualizace. Správná syntaxe
Node.js je:
update(selector, document, options, callback)
kde selector
je objekt, který je selektorem/dotazem pro operaci aktualizace, document
je také objekt, který je aktualizačním dokumentem a konečně options
objekt, který je ve výchozím nastavení null a má volitelná nastavení aktualizace.
Tady to děláte
update(selector, document, selector, document, options, options, callback)
Ve kterém mongo aktualizuje kolekci pomocí prvních dvou parametrů jako správné a přirozeně vyvolá chybu
protože jste zadali příliš mnoho nesprávných parametrů.
Také jste nesprávně použili polohový operátor. Měl by být součástí dokumentu, který má být aktualizován, nikoli v dotazu.
Pro správnou implementaci postupujte podle této aktualizace
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 }
)