当前位置: 首页 > 知识库问答 >
问题:

更新findOne()/find()/findById()返回的文档-mongoose

楚知
2023-03-14

我想知道是否有任何方法可以更改由猫鼬find()findOne()findById()方法返回的文档对象的可用字段的值,并通过应用到数据库中的更改来更新它们。下面的代码片段是我期望完成我想要的工作:

User.findOne({ email: email })
      .then(user => {
        if (user) {
            user.fieldToUpdate = "Updated value"; // Here I'm getting the field and updating it with the new value;
            user.save().then().catch(); // Here I'm updating the document to the database, expecting for a promise object
        } else {
          const error = new Error("No such user in the database.");
          error.httpStatusCode = 422;
          next(error);
        }
      })
      .catch(error => {
        next(error);
      });

共有1个答案

梁华皓
2023-03-14

您编写的代码片段可以正常工作,但如果您只需要更新找到的文档:

User.findOneAndUpdate({ email }, { email: 'sample@test.com' })
  .then((err, user) => {
    //
  }

更多关于文档的信息

 类似资料:
  • 问题内容: 下面是我的代码 我的mongo数据库中已经有一些记录,我想运行此代码来更新年龄为17岁的姓名,然后在代码末尾打印结果。 但是,为什么我仍然从控制台获得相同的结果(而不是修改后的名称),但是当我转到mongo db命令行并键入“ ”时。结果带有修改后的名称。 然后,我再次运行该代码,并修改了结果。 我的问题是:如果修改了数据,那么为什么在console.log时还是第一次获得原始数据。

  • 问题内容: 我想获取更新的文档。这是我的原始代码,它成功更新但没有返回文档。 我使用了toArray函数,但是这给出了错误“没有提供的回调就不能使用writeConcern”: 有任何想法吗? 问题答案: 只会向自己的回调报告受影响的文档数。 要在修改时检索文档,可以改用(以前称为)。 更新:在mongoDB中执行时,请使用;如果使用mongoose,则可以使用。以上是Node.js驱动程序。 注

  • 我正在学习nodejs和mongodb,并获得平均应用程序 我的系统规格是 Ubuntu 16.04(64位) 节点v 6.1.0 npm v 3.8.6 "mongodb":"^2.1.18", "猫鼬":"^4.4.16"," 到目前为止,我已经创建了模式,并通过终端使用在mongob集合中添加了一个条目,并使用获得生成的文档_id。 db。位置。查找()。终端中的pretty()返回低于输出

  • 更新文档操作既可以完全覆盖现存文档全部字段,又可以部分更新字段(更改现存字段,或添加新字段)。 部分更新 如果你要部分更新文档(如更改现存字段,或添加新字段),你可以在 body 参数中指定一个 doc 参数。这样 doc 参数内的字段会与现存字段进行合并。 $params = [ 'index' => 'my_index', 'type' => 'my_type', 'i

  • 问题内容: 我在子文档的Mongoose中尝试执行findOne查询,但运气不佳… 我的架构如下所示: 我只需要从我使用此查询的文档中查找用户的电子邮件 任何帮助,将不胜感激! 问题答案: 您缺少对象的级别,因此您的代码需要更改为以下内容:

  • 问题内容: 我试图在扭曲的python中结合这两个查询: 和: 进入单个查询。有可能这样做吗? 我尝试将SELECT放在子查询中,但我不认为整个查询都会返回我想要的内容。 有没有办法做到这一点?(甚至更好,没有子查询)还是只需要坚持两个查询? 谢谢, 泉 问题答案: 您不能直接合并这些查询。但是您可以编写一个存储过程来执行两个查询。例: