Din update
sætningen er forkert, den har malplacerede argumenter - du sætter flere $set
operationer og muligheder som forskellige parametre til opdateringsmetoden; de skal være under separate udpegede opdateringsparametre. Den korrekte Node.js syntaks
er:
update(selector, document, options, callback)
hvor selector
er et objekt, som er vælgeren/forespørgslen for opdateringsoperationen, document
er også et objekt, som er opdateringsdokumentet og endelig en options
objekt, som som standard er null og har de valgfrie opdateringsindstillinger.
Her gør du
update(selector, document, selector, document, options, options, callback)
I hvilken mongo opdaterer samlingen ved at bruge de to første parametre som korrekte, og det kaster naturligvis fejlen
fordi du har angivet for mange forkerte parametre.
Du har også forkert brug af positionsoperatøren. Det skal være en del af dokumentet, der skal opdateres, ikke i forespørgslen.
For den korrekte implementering skal du følge denne opdatering
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 }
)