sql >> Base de Datos >  >> NoSQL >> MongoDB

No se pueden actualizar los datos en mongodb

Su update la declaración es incorrecta, tiene argumentos fuera de lugar:está colocando múltiples $set operaciones y opciones como parámetros diferentes al método de actualización; deben estar bajo parámetros de actualización designados por separado. La sintaxis de Node.js es:

update(selector, document, options, callback)

donde selector es un objeto que es el selector/consulta para la operación de actualización, document también es un objeto que es el documento de actualización y finalmente un options objeto que por defecto es nulo y tiene la configuración de actualización opcional.

Aquí lo estás haciendo

update(selector, document, selector, document, options, options, callback)

En el que mongo está actualizando la colección utilizando los dos primeros parámetros como correctos y, naturalmente, arroja el error

porque ha especificado demasiados parámetros incorrectos.

Además, tiene un uso incorrecto del operador posicional. Debe ser parte del documento a actualizar, no en la consulta.

Para la implementación correcta, siga esta actualización

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