Twoja update
oświadczenie jest nieprawidłowe, zawiera źle umieszczone argumenty - umieszczasz wiele $set
operacje i opcje jako różne parametry do metody aktualizacji; powinny podlegać oddzielnym wyznaczonym parametrom aktualizacji. Poprawna składnia
Node.js jest:
update(selector, document, options, callback)
gdzie selector
jest obiektem będącym selektorem/zapytanie dla operacji aktualizacji, document
to także obiekt będący dokumentem aktualizacji i wreszcie options
obiekt, który domyślnie ma wartość null i ma opcjonalne ustawienia aktualizacji.
Tutaj robisz
update(selector, document, selector, document, options, options, callback)
W którym mongo aktualizuje kolekcję, używając pierwszych dwóch parametrów jako poprawnych i naturalnie zgłasza błąd
ponieważ określono zbyt wiele nieprawidłowych parametrów.
Ponadto masz nieprawidłowe użycie operatora pozycyjnego. Powinien być częścią aktualizowanego dokumentu, a nie zapytania.
Aby uzyskać prawidłową implementację, postępuj zgodnie z tą aktualizacją
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 }
)