问个mongodb主动加锁的问题

ayun00 2016-04-14 01:59:48
我要个插入的数据分配一个类似其他数据库里的自增ID,
我是想这么实现,
1.创建锁状态表1, 有字段A (int), B (guid)
2.读表1的字段A
3.如果A的值为2, 已经有任务加锁了,等待
4.如果A的值为1,无锁
5.改写A的值为2. B的值为一个新的guid (条件为开始读到的字段B)
6.成功,表示加锁成功 ,执行其他操作
7.失败,表示有人先加了锁,回到步骤2.

请教下 有没有问题?
...全文
833 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mash5_paul 2016-04-19
  • 打赏
  • 举报
回复
_id生成的规则就知道永远不会重复,update(param1, param2)两个参数第一个算是查询条件,第二个就是修改之后的数据。如果LZ想传递的param2只修改param2里面传递的键对应的值,LZ可以自己重新写个update方法
ayun00 2016-04-19
  • 打赏
  • 举报
回复
引用 2 楼 rucypli 的回复:
自带的_id永远不会重复 为什么要自己生成呢 另外update当然可以带条件 每一个sql都有对应的mongo语句 http://docs.mongodb.org/manual/reference/sql-comparison/
引用 3 楼 lu467344991 的回复:
_id生成的规则就知道永远不会重复,update(param1, param2)两个参数第一个算是查询条件,第二个就是修改之后的数据。如果LZ想传递的param2只修改param2里面传递的键对应的值,LZ可以自己重新写个update方法
_ID 的值不是自动生成的吗? 不同的ID 就是不同的记录吧? 我的想法是 客户A加锁的时候, 会去update 字段A的值 ,客户B读到这个值来判断是否在加锁状态 设计字段B的用意是, 防止同时加锁, 就是保证客户A和客户B同时update后,因为字段B的值不同而不会同时成功 这里和id的值没有关系吧?
rucypli 2016-04-18
  • 打赏
  • 举报
回复
自带的_id永远不会重复 为什么要自己生成呢 另外update当然可以带条件 每一个sql都有对应的mongo语句 http://docs.mongodb.org/manual/reference/sql-comparison/
ayun00 2016-04-14
  • 打赏
  • 举报
回复
另外问一句,mongodb在update的时候能带条件吗?

1,798

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧