我正在使用Update和FindAndModify但现在我已经读过Update和FindAndModify是原子的(http://docs.mongodb.org/manual/tutorial/model-data-for-atomic-operations/),
因此,如果两者都可以完成相同的工作,通过查询项目并更新它,那么有什么区别?
我在StackOverflow上找到了几个答案,但没有一个提到Update也是原子的:What's the difference between findAndModify and update in MongoDB?
答案 0 :(得分:6)
不同之处在于FindAndModify()在一次原子操作中返回文档,包括更新前版本或更新后版本以及更新。更新是原子的,但不会返回文档,因此如果您再查询它,那么它可能会在过渡期间被另一个进程更改。
修改单个文档时,findAndModify()和 update()方法以原子方式更新文档。
请注意,这是针对单个文档的 - 更新可以修改多个文档,findandmodify则不能。
另外,findandmodify()可以删除文件,而update()则不能。
http://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/