MongoDB 并发更新的疑惑

最近因为接到爬虫的项目而使用到了MongoDB(之前没用过)
这次项目是把 Websocket 传输过来的数据而更新 MongoDB里的数据
单一的 Websocket 传输是没有什么大碍,毕竟 update 就行,
问题是现在有两个 Websocket 传输导致有两次的数据被传输了。
比如:
刚开始 A进程 连接 Websocket 地址并监听数据并更新MongoDB
过一段时间(因为 A进程 只能维持 20分钟左右,官方会强制踢下线)
所以 我这里弄了计时器 等到 A进程到 19分钟左右的时候
B进程会准备连接 Websocket 并监听数据并更新MongoDB

这里用计时器是因为 连接 Websocket的步骤大概花 20秒左右,
想避免这20秒内的数据丢失而做了计时器,达到无缝连接的效果。

这时候A进程B进程 都会连接 Websocket
所以导致两个进程会同时发送同样的数据到 MongoDB里,更新了两次。
这种同时更新的情况会不会出问题呢?大家是怎么解决的呢?

因为数据传输太快太频,我这里都不知道怎么测试了。
之前用upsert来测试的时候 并发的数据是不管用,直接insert两个记录。

最佳答案

mongodb里有version的,能通过判断version来避免insert吗?

当然了,前提是你要得到version。

1个月前 评论
CrooCode (楼主) 1个月前
讨论数量: 2

mongodb里有version的,能通过判断version来避免insert吗?

当然了,前提是你要得到version。

1个月前 评论
CrooCode (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!