Id like to update an array and return the doc. Is my findAndModify syntax correct?
this.becomeFollower = function(title, username, callback){
"use strict"
posts.findAndModify({
query: {"title":title, "roster":"yes"},
update: { "$addToSet": { "followers":username } },
new: true,
upsert: true
},
function(err, doc){
console.log('find and modified ' +doc);
});
}
I had no problem using this:
posts.update({"title":title, "roster":"yes"}, { "$addToSet": { "followers":username } }, function(err, roster){
"use strict"
if(err) return callback(err, null);
callback(err, roster);
});
Check out the docs for node-mongodb findAndModify; the signature looks like:
collection.findAndModify(query, sort, update, options, callback)
So you should do:
posts.findAndModify(
{"title":title, "roster":"yes"},
[['_id','asc']],
{ "$addToSet": { "followers":username } },
{new: true, upsert: true},
function(err, doc){
console.log('find and modified ' +doc);
}
);
The sort
argument is probably optional, but it's unclear so I included it in the example.
来源:https://stackoverflow.com/questions/22671946/findandmodify-mongoerror-exception-must-specify-remove-or-update