我使用MongoDB和node js,我使用了npm install mongodb

我想更新现有文档并返回更新后的文档,文档已正确更新.但它返回旧文档,即更新前的原始文档.我使用了returnNewDocument:true参数,但没有使用.

            var filter = {
                '_id': object_id
            },
            update = {
                $set: { "status" : data["status"] },
                $push: {
                    "statusHistory": {
                        $each: [{ status:data["status"],statusChangedTime:data["statusChangedTime"],comment:data["comment"]}],
                        $position:0,
                    }
                },
            }
            ,options = {
                //upsert: false,
                //multi: false,
                returnNewDocument: true
            };

            col.findOneAndUpdate(filter, update, options,function(err, res) {
                if (err) {

                    console.log(err);
                }else {

                    console.log(res);
                }
            });

答案是

{ lastErrorObject: { updatedExisting: true, n: 1 },
  value: 
   { 
//original document
   },     
  ok: 1 }

当我通过终端直接go mongoDB并try

db.MyCollection.find().pretty();

文档已正确更新,它只返回原始文档,而不是更新的文档.

在这里停留了两个小时,感谢您的帮助

打包的.json

"mongodb": "^2.1.4",

推荐答案

node .js driver documentation没有提到findOneAndUpdate()returnNewDocument选项(这是同名MongoDB shell command的选项).

相反,它提到了一个名为returnOriginal的选项,默认为true.try 使用该选项,将其设置为false以返回updated文档,而不是原始文档.

Node.js相关问答推荐

Express 4.18正文解析

Mongoose更新许多不使用数组作为筛选器来更新记录

使用 playwright 获取页面中同一 url 的所有响应

构建期间 Docker 容器中的 npm 安装失败

如何使用mongoose引用不在项目中的模型

如何在套接字对象中存储或添加数据?

Prisma,只有一个用户的行可以有真值,@@unique(userId, isActive)

Mongoose post中间件触发deleteMany

Cloudflare 522 错误 - javascript 客户端连接到 node 服务器

Fly.io 启动问题:无法从源获取图像或构建错误:构建错误:连接期间出错:发布...

Cypress net::ERR_EMPTY_RESPONSE 在真实服务器调用上

Node.js mongodb 驱动程序异步/等待查询

与 NPM 一起安装时找不到 Express 模块

安全沙箱并执行用户提交的 JavaScript?

无法获取 CSS 文件

在 express 中添加故意延迟

ChildProcess 关闭、退出事件之间的区别

如何brew安装特定版本的Node?

使用 gzip/deflate 压缩的简单 HTTP 请求

为什么 Node.js 被命名为 Node.js?