一尘不染

在Mongodb中更新和返回文档

node.js

我想获取更新的文档。这是我的原始代码,它成功更新但没有返回文档。

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();
                });

有任何想法吗?


阅读 542

收藏
2020-07-07

共1个答案

一尘不染

collection.update() 只会向自己的回调报告受影响的文档数。

要在修改时检索文档,可以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驱动程序。

注意:当前指的是2.2版以上的Node.js驱动程序。对于将来的版本,请检查文档中是否有弃用警告,并改用建议的替代方法。

2020-07-07