MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie verwende ich findAndModify mit einem Node.js-MongoDB-Treiber?

Der findAndModify Methode hat die folgende Signatur

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

wo

  • query <object> :Das Abfrageobjekt zum Suchen des zu ändernden Objekts.
  • sort <array> :Wenn mehrere Dokumente übereinstimmen, wählen Sie das erste in der angegebenen Sortierreihenfolge als zu bearbeitendes Objekt aus.
  • doc <object> :Die zu aktualisierenden Felder/Werte.
  • options <object> optional:Optionale Einstellungen.

Der Grund, warum Sie den Fehler erhalten, liegt in der sort Spezifikation fehlt und stattdessen das Update doc liest als sort Parameter.

Sie müssen den Sortierparameter wie folgt angeben:

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