当前位置: 首页 > 面试题库 >

与returnNewDocument:true一起使用的findOneAndUpdate返回原始文档MongoDB

范承望
2023-03-14
问题内容

我正在将MongoDB与节点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 }

当我直接通过终端转到mongoDB并尝试

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

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

在这里停留了2个小时,我们将不胜感激

在package.json中

"mongodb": "^2.1.4",

问题答案:

Node.js 驱动程序文档中没有提及returnNewDocument选项findOneAndUpdate()(这是具有相同名称的MongoDB
Shell命令
的选项)。

相反,它提到了一个名为的选项returnOriginal,默认为true。尝试使用该选项,将其设置false返回 更新的
文档而不是原始文档。



 类似资料:
  • 环境 期望的行为 我想更新文档并返回原始文档。 实际行为 正在返回更新的文档,而不是原始文档。 我试过的 起初,我在查看findAndModify: http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findAndModify 然而,那里的文档表示它已被弃用,并使用findOneAndUpdate、findOn

  • 为了学习平均堆栈(使用Mongoose),我创建了一个StackOverflow类型的应用程序。我有存储在Mongo(v3.0.7)中的问题,它们有答案子文档。 我试图增加一个答案的投票数,但当问题返回时,它是空的。我非常肯定查询有问题,特别是我试图用需要修改的ID得到答案的地方。 查询0票有效: 更新:通过Mongo查询,返回结果: 但是,通过Mongoose返回NULL:

  • 我在spring web应用程序中有以下要求: 从Elasticsearch中查找对象并在谷歌地图上显示(首选json格式) 从Elasticsearch中查找对象(与上面的查询相同),并将其显示在列表中(首选java对象格式,以便在JSP页面上显示) 我使用SearchRequestBuilder编写了Java API搜索,效果很好: 但是为了在谷歌地图上显示它,我更喜欢从elasticsear

  • 问题内容: 这是课程: 现在,我试图从类中“反射”此方法: 问题答案: 只有一个。 另一种选择是。 其他原语也是如此。

  • 我有一个upsert需求,所以我需要调用postgres存储过程或使用公共表表达式。我还将pgcrypto扩展用于密码,并希望使用postgres函数(例如“crypt”来编码/解码密码)。 但是我找不到让ecto部分或全部使用原始sql的方法,是不是打算让ecto只支持长生不老的dsl,而不允许在dsl不够用的情况下使用原始sql? 我发现我可以通过适配器进行查询(Rocket是应用程序的名称)

  • 使用mongoose,我希望搜索具有特定属性的子文档并返回最近的一个。 给定一个特定的用户,我想搜索他们的s,查找他们的