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

Como usar findAndModify com um driver Node.js MongoDB?


O findAndModify método tem a seguinte assinatura
findAndModify(query, sort, doc, options, callback)

Onde
  • query <object> :o objeto de consulta para localizar o objeto a ser modificado.
  • sort <array> :se vários documentos corresponderem, escolha o primeiro na ordem de classificação especificada como o objeto a ser manipulado.
  • doc <object> :os campos/vals a serem atualizados.
  • options <object> opcional:configurações opcionais.

O motivo pelo qual você está recebendo o erro é porque o sort a especificação está ausente e, em vez disso, está lendo a atualização doc como a sort parâmetro.

Você precisa especificar o parâmetro de classificação da seguinte maneira:
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);
        }
    }
);