我们知道sql中并发控制采用的乐观锁就是在记录中增加版本号或timestamp,那么mongodb中如何实现呢?
Mongodb不善于处理事务,但提供了findAndModify命令。该命令允许对文档进行原子性更新,并在同一次调用中返回:
代码如如:
db.collection_yown.findAndModify( { query:{"name":"yown"},update:{"version":2},new:true or false } )
update和findAndModify都可以用做更新操作;
区别 :
findAndModify是有返回值的,输出中的value字段即返回修改之前的文档,使用 new:true选项返回修改后的文档。 update是更新操作,是没有返回值的。
findAndModify 强调操作的原子性(atomically),比如用来实现自增1的操作或者操作队列。属于 get-and-set 式的操作,一般来讲,findAndModify 比update操作稍慢,因为需要等待数据库的响应。
另外findAndModify ,其中modify可以是update,还可以是remove
{ findAndModify: <string>,query: <document>,sort: <document>,remove: <boolean>,update: <document>,new: <boolean>,fields: <document>,upsert: <boolean> }