Votre update
l'instruction est incorrecte, elle a des arguments mal placés - vous mettez plusieurs $set
opérations et options en tant que paramètres différents de la méthode de mise à jour ; ils doivent être sous des paramètres de mise à jour désignés distincts. La bonne syntaxe
de Node.js est :
update(selector, document, options, callback)
où selector
est un objet qui est le sélecteur/requête pour l'opération de mise à jour, document
est aussi un objet qui est le document de mise à jour et enfin un options
objet qui par défaut est nul et a les paramètres de mise à jour facultatifs.
Voilà ce que vous faites
update(selector, document, selector, document, options, options, callback)
Dans lequel mongo met à jour la collection en utilisant les deux premiers paramètres comme corrects et génère naturellement l'erreur
car vous avez spécifié trop de paramètres incorrects.
En outre, vous avez une utilisation incorrecte de l'opérateur positionnel. Il doit faire partie du document à mettre à jour, pas dans la requête.
Pour une implémentation correcte, suivez cette mise à jour
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 }
)