Sua atualização
update
declaração está incorreta, ela tem argumentos mal colocados - você está colocando vários $set
operações e opções como parâmetros diferentes para o método de atualização; eles devem estar sob parâmetros de atualização designados separados. A sintaxe
correta do Node.js é:update(selector, document, options, callback)
onde
selector
é um objeto que é o seletor/consulta para a operação de atualização, document
é também um objeto que é o documento de atualização e finalmente um options
objeto que por padrão é nulo e tem as configurações de atualização opcionais. Aqui você está fazendo
update(selector, document, selector, document, options, options, callback)
Em que o mongo está atualizando a coleção usando os dois primeiros parâmetros como corretos e naturalmente lança o erro
porque você tem muitos parâmetros incorretos especificados.
Além disso, você tem uso incorreto do operador posicional. Deve fazer parte do documento a ser atualizado, não na consulta.
Para a implementação correta, siga esta atualização
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 }
)