在mongodb中查找更新和更新

时间:2014-07-17 21:13:31

标签: mongodb mongomapper findandmodify

我正在使用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?

1 个答案:

答案 0 :(得分:6)

不同之处在于FindAndModify()在一次原子操作中返回文档,包括更新前版本或更新后版本以及更新。更新是原子的,但不会返回文档,因此如果您再查询它,那么它可能会在过渡期间被另一个进程更改。

  

修改单个文档时,findAndModify()和   update()方法以原子方式更新文档。

请注意,这是针对单个文档的 - 更新可以修改多个文档,findandmodify则不能。

另外,findandmodify()可以删除文件,而update()则不能。

http://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/