MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come utilizzare findAndModify con un driver MongoDB Node.js?

Il findAndModify il metodo ha la seguente firma

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

dove

  • query <object> :l'oggetto della query per individuare l'oggetto da modificare.
  • sort <array> :se più documenti corrispondono, scegli il primo nell'ordinamento specificato come oggetto da manipolare.
  • doc <object> :i campi/valori da aggiornare.
  • options <object> opzionale:impostazioni opzionali.

Il motivo per cui ricevi l'errore è perché sort manca la specifica e invece sta leggendo l'aggiornamento doc come sort parametro.

È necessario specificare il parametro di ordinamento come segue:

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