【问题标题】:mongoose difference of findOneAndUpdate and updatefindOneAndUpdate 和 update 的猫鼬区别
【发布时间】:2015-10-26 19:53:36
【问题描述】:

findOneAndUpdate 和 update 有什么区别?

两者都接受查询条件和更新文档。

【问题讨论】:

    标签: database mongodb mongoose sql-update


    【解决方案1】:

    .findOneAndUpdate 方法发出一个 mongodb .findAndModify 更新命令并将找到的文档(如果有)返回给回调,或者如果 new 选项是 true 和 @ 则返回修改后的文档而不是原始文档987654323@ 将查询作为update() 操作执行。

    【讨论】:

      【解决方案2】:

      .update().findAndModify() 都有各自的文档可供查看,这是 .findOneAndUpdate() 的根方法。

      但主要区别有:

      • update():旨在对集合中与其查询条件匹配的“一个或多个”文档执行原子更新操作。它在响应中返回修改文档的数量。

      • findOneAndUpdate():目的是处理“单一”文档上的更新语句,以及检索该“单一”文档的内容。返回的状态取决于传递给操作的“新”选项的值。 true 返回“修改后的”文档。其中false 在任何修改之前返回“原始”文档。后一种形式是默认选项。

      简而言之。一种是“批量”修改,而不用担心结果中的文档内容。另一种是修改单个文档,并在结果中返回文档内容。

      这就是区别。

      【讨论】:

      • 问题会更加一致,如下所示:mongoDB 'findOneAndUpdate' 和 'updateOne' 有什么区别,或/和 mongoDB 'update' 和 'findAndModify' 有什么区别。性能?
      • 另外一个区别:当使用 Mongoose 中间件(钩子)时,updateOne 触发文档中间件,findOneAndUpdate 触发查询中间件。两者在编码钩子时可以访问哪些数据(前者中的文档,后者中的查询)有所不同。
      【解决方案3】:

      注意在 findOneAndXXX 方法中有一个选项returnNewDocument,它的默认值是true。如果您使用的是 node.js 驱动程序,则选项称为returnOriginal

      【讨论】:

        猜你喜欢
        • 2018-04-25
        • 2014-04-12
        • 2021-09-25
        • 2017-10-05
        • 2015-09-15
        • 2018-07-15
        • 2020-11-13
        • 2013-06-19
        相关资源
        最近更新 更多