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

Comment utiliser findAndModify avec un pilote Node.js MongoDB ?

Le findAndModify méthode a la signature suivante

findAndModify(query, sort, doc, options, callback)

  • query <object> :L'objet de requête pour localiser l'objet à modifier.
  • sort <array>  :Si plusieurs documents correspondent, choisissez le premier dans l'ordre de tri spécifié comme objet à manipuler.
  • doc <object> :Les champs/valeurs à mettre à jour.
  • options <object> facultatif :paramètres facultatifs.

La raison pour laquelle vous obtenez l'erreur est que le sort spécification est manquante et à la place, il lit la mise à jour doc comme sort paramètre.

Vous devez spécifier le paramètre de tri comme suit :

db.get().collection('bars').findAndModify(
    { "barID": req.body.button },   // query
    [ ["barID", 1] ],               // sort
    {
        "$push": {                   // doc
            "usersfbID": req.body.profileUser[0].facebookID,
            "usersDocID": req.body.profileUser[0]._id
        }
    },
    { "new": true },                // options
    function(err, doc){             // callback
        if (err){
            throw err;
        } else if(doc){
            console.log('Existing document updated successfully');
            console.log(doc);
        }
    }
);