MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Não é possível atualizar os dados no mongodb


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 }
)