Din update
uttalandet är felaktigt, det har felplacerade argument - du lägger flera $set
operationer och alternativ som olika parametrar till uppdateringsmetoden; de bör vara under separata angivna uppdateringsparametrar. Rätt Node.js syntax
är:
update(selector, document, options, callback)
där selector
är ett objekt som är väljaren/frågan för uppdateringsoperationen, document
är också ett objekt som är uppdateringsdokumentet och slutligen ett options
objekt som som standard är null och har de valfria uppdateringsinställningarna.
Här gör du
update(selector, document, selector, document, options, options, callback)
I vilken mongo uppdaterar samlingen med de två första parametrarna som korrekta och det skapar naturligtvis felet
eftersom du har angett för många felaktiga parametrar.
Dessutom har du felaktig användning av positionsoperatören. Det bör vara en del av dokumentet som ska uppdateras, inte i frågan.
För korrekt implementering, följ den här uppdateringen
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 }
)