首页 > 解决方案 > 多个用户在mongdb中同时更新相同的数据

问题描述

我是 mondb 的新手。我在数据库中存储了一个计数器变量。每次用户执行某个动作,计数器变量的值都会加1。我想知道的问题是,如果多个用户同时更新计数器,计数器会保持正确的值吗?(期望计数器将精确地增加更新次数)。如果这导致逻辑错误,我该如何解决?

标签: mongodbtransactions

解决方案


一个很好的问题,这种竞争条件可以用你已经提到的类似方式来解决。

{
  item_id : <id>,
  version : <Number>,
  updated_by : <something>
}

当您获取此文档进行更新时,您将获得整个文档,现在在写入期间系统会采用粒度文档级别锁定,因此不会有问题。

更新更新的查询部分应该同时具有 item_id 和版本以及您更新的其他内容 - 也增加文档的版本。

如果后端收到了同一文档的两个副本以进行更新,那么迟到的那个将具有以前的版本,因此它将无法更新任何内容。

现在在用户将更改推送到系统之前处理文档更改的流程。


推荐阅读