Uw update
verklaring is onjuist, het heeft verkeerd geplaatste argumenten - u plaatst meerdere $set
bewerkingen en opties als verschillende parameters voor de updatemethode; ze moeten onder afzonderlijke aangewezen updateparameters staan. De juiste Node.js syntaxis
is:
update(selector, document, options, callback)
waar selector
is een object dat de selector/query is voor de update-bewerking, document
is ook een object dat het updatedocument is en tot slot een options
object dat standaard null is en de optionele update-instellingen heeft.
Hier ben je aan het doen
update(selector, document, selector, document, options, options, callback)
Waarin mongo de verzameling bijwerkt met de eerste twee parameters als correct en het natuurlijk de fout geeft
omdat u te veel onjuiste parameters heeft opgegeven.
U hebt ook een onjuist gebruik van de positionele operator. Het moet deel uitmaken van het document dat moet worden bijgewerkt, niet in de zoekopdracht.
Volg deze update voor de juiste implementatie
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 }
)