mongodb自增列的问题

wck545 2012-12-08 10:45:44
大家好

我在使用mongodb的时候,需要实现一个自增列,因为mongodb里面,没有类似关系数据库的自增列功能,就必须自己做

我参考了网上的各种说法,基本上,都是使用findAndModify做。
这个方式是可行的,我的疑问是:

1)我的实现方案里面,有自己实现一个连接池,每次更新的时候,有可能不是同一个连接
2)如果再某个请求里面,用A连接,使用findAndModify方式,把某个文档值改为1
3)在接下来的一个请求里,也同样用findAndModify方式,做操作

但是由于是在mongodb的不同连接,有没有可能2个很快的请求,第一个修改完成,但是第二连接没法读取到这个改变?

我看一些书上的说明,如果A连接插入,B连接读取,很有可能B连接没法读取到A的插入结果,因为mongodb在每个连接都有操作的排队。

就不知道更新有没有这个问题?

还有就是在mongodb里面,实现自增,是不是就这种方式了?
...全文
431 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
王者大虾 2014-01-04
  • 打赏
  • 举报
回复
findAndModify 怎么实现自增列, 我最近也在研究C#+MongoDB, 搞不明白怎么处理。
tb12315 2013-12-28
  • 打赏
  • 举报
回复
我看一些书上的说明,如果A连接插入,B连接读取,很有可能B连接没法读取到A的插入结果,因为mongodb在每个连接都有操作的排队。 是什么意思? 你说的是副本集? 如果是副本集的话,你可以在你的写操作里边设置,当所有副本集都被同步最新才返回,这样不就能保证你的读是对的
影子传说_Hades 2013-11-25
  • 打赏
  • 举报
回复
分布式用一个点写,多个点读,或者zookeeper协同
t594362122 2012-12-13
  • 打赏
  • 举报
回复
引用 2 楼 KPRF2009 的回复:
synchronized 用这个 互斥
你这也只能在单jvm中起效,分布式是没用的
KPRF2009 2012-12-13
  • 打赏
  • 举报
回复
synchronized 用这个 互斥
wck545 2012-12-12
  • 打赏
  • 举报
回复
额。。这么久都没有人回答吗?

1,797

社区成员

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

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