【发布时间】:2015-10-26 19:53:36
【问题描述】:
findOneAndUpdate 和 update 有什么区别?
两者都接受查询条件和更新文档。
【问题讨论】:
标签: database mongodb mongoose sql-update
findOneAndUpdate 和 update 有什么区别?
两者都接受查询条件和更新文档。
【问题讨论】:
标签: database mongodb mongoose sql-update
.findOneAndUpdate 方法发出一个 mongodb .findAndModify 更新命令并将找到的文档(如果有)返回给回调,或者如果 new 选项是 true 和 @ 则返回修改后的文档而不是原始文档987654323@ 将查询作为update() 操作执行。
【讨论】:
.update() 和 .findAndModify() 都有各自的文档可供查看,这是 .findOneAndUpdate() 的根方法。
但主要区别有:
update():旨在对集合中与其查询条件匹配的“一个或多个”文档执行原子更新操作。它在响应中返回修改文档的数量。
findOneAndUpdate():目的是处理“单一”文档上的更新语句,以及检索该“单一”文档的内容。返回的状态取决于传递给操作的“新”选项的值。 true 返回“修改后的”文档。其中false 在任何修改之前返回“原始”文档。后一种形式是默认选项。
简而言之。一种是“批量”修改,而不用担心结果中的文档内容。另一种是修改单个文档,并在结果中返回文档内容。
这就是区别。
【讨论】:
updateOne 触发文档中间件,findOneAndUpdate 触发查询中间件。两者在编码钩子时可以访问哪些数据(前者中的文档,后者中的查询)有所不同。
注意在 findOneAndXXX 方法中有一个选项returnNewDocument,它的默认值是true。如果您使用的是 node.js 驱动程序,则选项称为returnOriginal。
【讨论】: