Mongodb findAndModify node js

2019-01-12 00:50发布

问题:

Following code gives me exception in node js saying: "need remove or update"

var args = {
                query: { _id: _id },
                update: { $set: data},
                new: true,
                remove:false
            };

            db.collection(COLLECTION.INVENTORY_LOCATION).findAndModify(args,
                function (err, results) {
                    if (err) {
                        return callback(err);
                    } else {
                        console.log(results);
                        callback(null, results);
                    }
                });

Not able to figure out the issue as I have specified the update operation.

回答1:

The syntax is different in the node driver than for the shell, which is the syntax you are using.

db.collection("collection_name").findAndModify(
    { _id: _id },     // query
    [],               // represents a sort order if multiple matches
    { $set: data },   // update statement
    { new: true },    // options - new to return the modified document
    function(err,doc) {

    }
);

There is a separate function for .findAndRemove()



回答2:

As the documentation for the remove parameter of the findAndModify function states:

remove: <boolean>:
Must specify either the remove or the update field. Removes the document specified in the query field. Set this to true to remove the selected document . The default is false.

The default value is false so you don't have to provide it at all.

I believe the issue is that you are supplying both update and remove parameters. Try removing the remove parameter.