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.

https://stackoverflow.com/questions/24747189/

相关文章:

mongodb - 如何使用 MongoDB 进行报告?

mongodb - $unwind 聚合框架中的对象

mongodb - Mongoose - 在 ObjectId 数组上使用 Populate

mongodb - 图形数据库与文档数据库与三重存储

c# - 序列化 Mongo ObjectId 时出现 JSON.NET 转换错误

mongodb - 在 MongoDB shell 查询中获取 "data from collect

regex - MongoDB,通过正则表达式对索引字段的查询性能

MongoDB 性能 - 拥有多个数据库

mongodb - 无法使用 --db 创建备份 mongodump。身份验证失败

python - 文档中的 Mongoengine creation_time 属性