node.js - 在MongoDB中更新和返回文档

标签 node.js mongodb

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

collection.update({ "code": req.body.code },{$set:  req.body.updatedFields}, function(err, results) {
                        res.send({error: err, affected: results});
                        db.close();
                    });

我使用了 toArray 函数,但这给出了错误“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();
                });

有什么想法吗?

最佳答案

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

returnOriginal 选项(或 Mongoose 的 new)允许您指定将找到的文档的哪个版本(原始 [默认] 或更新)传递给回调。

returnOriginal 在版本 3.6 中已弃用。使用 returnDocument: "before"| 3.6 及更高版本的“之后”


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.

关于node.js - 在MongoDB中更新和返回文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24747189/

相关文章:

javascript - 这有什么问题吗?尝试在原型(prototype)中使用请求回调......但收效甚微

c# - 使用 .NET 驱动程序 2.0 在 MongoDB 中构建索引

MongoDB:更新一个字段上的每个文档

javascript - 从 Mongoose 获取现有的嵌入文档

javascript - 读入并解析后从 JSON 文件返回一个随机值

node.js - 尽管 NPM 无法安装模块,jenkins 仍继续部署过程

javascript - 无法在 nodejs 8 中创建 mongodb 连接

node.js - 适用于 NodeJS 的 Firebase 动态链接构建器 API

python - 使用 Mongomock 测试 $lookup 聚合

mongodb - 如何在symfony2中查询条件为 “like”的mongodb