Reputation: 3231
Following code gives me an exception in node js saying: "need to 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.
Upvotes: 6
Views: 6839
Reputation: 48006
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.
Upvotes: 0
Reputation: 151220
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()
Upvotes: 20