MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Impossible de mettre à jour les données dans mongodb

Votre update l'instruction est incorrecte, elle a des arguments mal placés - vous mettez plusieurs $set opérations et options en tant que paramètres différents de la méthode de mise à jour ; ils doivent être sous des paramètres de mise à jour désignés distincts. La bonne syntaxe de Node.js est :

update(selector, document, options, callback)

selector est un objet qui est le sélecteur/requête pour l'opération de mise à jour, document est aussi un objet qui est le document de mise à jour et enfin un options objet qui par défaut est nul et a les paramètres de mise à jour facultatifs.

Voilà ce que vous faites

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

Dans lequel mongo met à jour la collection en utilisant les deux premiers paramètres comme corrects et génère naturellement l'erreur

car vous avez spécifié trop de paramètres incorrects.

En outre, vous avez une utilisation incorrecte de l'opérateur positionnel. Il doit faire partie du document à mettre à jour, pas dans la requête.

Pour une implémentation correcte, suivez cette mise à jour

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