I want to get updated documents. This is my original code and it successfully updates but doesn't return the document.
collection.update({ "code": req.body.code },{$set: req.body.updatedFields}, function(err, results) { res.send({error: err, affected: results}); db.close(); });
I used the toArray
function, but this gave the error "Cannot use a writeConcern without a provided callback":
collection.update({ "code": req.body.code },{$set: req.body.updatedFields}).toArray( function(err, results) { res.send({error: err, affected: results}); db.close(); });
Any ideas?
collection. update() will only report the number of documents that were affected to its own callback.
MongoDB's update() and save() methods are used to update document into a collection. The update() method updates the values in the existing document while the save() method replaces the existing document with the document passed in save() method.
By default, findOneAndUpdate() returns the document as it was before update was applied. You should set the new option to true to return the document after update was applied.
The solution is to set: {returnOriginal: false}.
collection.findOneAndUpdate( whereObj, updateObj, {returnOriginal: false});
collection.update()
will only report the number of documents that were affected to its own callback.
To retrieve the documents while modifying, you can use collection.findOneAndUpdate()
instead (formerly .findAndModify()
).
collection.findOneAndUpdate( { "code": req.body.code }, { $set: req.body.updatedFields }, { returnOriginal: false }, function (err, documents) { res.send({ error: err, affected: documents }); db.close(); } );
The returnOriginal
option (or new
with Mongoose) lets you specify which version of a found document (original [default] or updated) is passed to the callback.
returnOriginal
was deprecated in version 3.6
. Use returnDocument: "before" | "after"
for version 3.6
and later.
Disclaimer: This answer currently refers to the Node.js Driver as of version 3.6. As new versions are released, check their documentation for possibly new deprecation warnings and recommended alternatives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With