我想获取更新的文档。这是我的原始代码,它成功更新但没有返回文档。
collection.update({ "code": req.body.code },{$set: req.body.updatedFields}, function(err, results) { res.send({error: err, affected: results}); db.close(); });
我使用了toArray函数,但是这给出了错误“没有提供的回调就不能使用writeConcern”:
collection.update({ "code": req.body.code },{$set: req.body.updatedFields}).toArray( function(err, results) { res.send({error: err, affected: results}); db.close(); });
有任何想法吗?
collection.update() 只会向自己的回调报告受影响的文档数。
collection.update()
要在修改时检索文档,可以collection.findOneAndUpdate()改用(以前称为.findAndModify())。
collection.findOneAndUpdate()
.findAndModify()
collection.findOneAndUpdate( { "code": req.body.code }, { $set: req.body.updatedFields }, { returnOriginal: false }, function (err, documents) { res.send({ error: err, affected: documents }); db.close(); } );
更新:.findOneAndUpdate在mongoDB中执行时,请使用;{returnNewDocument: true}如果使用mongoose,则可以使用{new : true}。以上是Node.js驱动程序。
.findOneAndUpdate
{returnNewDocument: true}
{new : true}
注意:当前指的是2.2版以上的Node.js驱动程序。对于将来的版本,请检查文档中是否有弃用警告,并改用建议的替代方法。