加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Nosql Mongodb 并发控制之乐观锁

发布时间:2020-12-13 13:53:24 所属栏目:百科 来源:网络整理
导读:我们知道sql中并发控制采用的乐观锁就是在记录中增加版本号或timestamp,那么mongodb中如何实现呢? Mongodb不善于处理事务,但提供了findAndModify命令。该命令允许对文档进行原子性更新,并在同一次调用中返回: 代码如如: db.collection_yown.findAndMod

我们知道sql中并发控制采用的乐观锁就是在记录中增加版本号或timestamp,那么mongodb中如何实现呢?

Mongodb不善于处理事务,但提供了findAndModify命令。该命令允许对文档进行原子性更新,并在同一次调用中返回:
代码如如:

db.collection_yown.findAndModify(
    {
      query:{"name":"yown"},update:{"version":2},new:true or false
    }
)

默认情况下,findAndModify命令会返回更新前的文档,要是返回修改后的文档,就把new设置为false.

Mongodb同时也提供update命令,这两者的区别如下:
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>
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读