colymore colymore - 1 month ago 18
Node.js Question

NodeJS and MongoDB FindAndModify() need remove or update

im trying to do a findAndModifiy in mongodb with nodejS, This is my code:

var nextBill = function (db, success, log) {
var collection = db.collection('autoincrements');
log.debug('autoIncrementRepository', 'nextBill');
var result = collection.findAndModify({
query: { _id: 'auto' },
update: { $inc: { bill: 1 } },
new: true
});

success(result.bill);
};


EDIT:

Try with callback

collection.findAndModify({
query: { _id: 'auto' },
update: { $inc: { bill: 1 } },
new: true
}, function (e, result) {
success(result.budget);
});


But give me the error need remove or update..But im doing it..

Answer

The .findAndModify() method in the node native driver implementation is different from the mongo shell implementation. To do an update as above you do:

collection.findAndModify(
   { "_id": "auto" },
   { "$inc": { "bill": 1 } },
   function(err,doc) {
     // work here

   }
);

Oddly somewhat to remove you specify in options so the same would "remove" the matched document:

collection.findAndModify(
   { "_id": "auto" },
   { "$inc": { "bill": 1 } },
   { "remove": true },
   function(err,doc) {
     // work here

   }
);

The main difference being you do not name the "key" sections for the actions.

Comments