findAndModify和findOneAndUpdate有什么区别?

14

看起来它们是一样的。但是它们之间真的有什么区别吗?唯一明显的事情是findOneAndUpdate() 只会匹配一个文档。

2个回答

8
除了您提到的,最明显的区别是:
`findOneAndUpdate` 仅允许更新 - 没有删除或替换等操作。
`findAndModify` 可以做更多的事情,包括替换、删除等等。它结合了三个 DML 操作的功能:更新、删除、替换。因此它可以用作这样。
缺点是它容易出现错误,因为它结合了三个 DML 操作。
相似之处:
- 它们都在单个文档上操作 - 并返回已更新的文档 - 前提是能匹配到一个
历史:
`findOneAndUpdate`、`findOneAndReplace`、`findOneAndDelete` 是版本 3.2 引入的三种比较新的方法,旨在回避 `findAndModify` 中提到的问题。

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接