对同一集合同一文档的并发更新

时间:2015-05-12 14:04:11

标签: java mongodb mongodb-java

问题陈述

如何处理同一集合和同一文档上的并发更新命令。

当前数据库结构

编辑 - 结构已更改

  {
     "userId":1,
     "summary_extra":[
        {
           "some_id":1,
           "names":[
              "one",
              "two"
           ]
        },
        {
           "some_id":2,
           "names":[
              "three",
              "four"
           ]
        }
     ]
  },
  {
     "userId":2,
     "summary_extra":[
        {
           "some_id":1,
           "names":[
              "one",
              "two"
           ]
        },
        {
           "some_id":2,
           "names":[
              "three",
              "four"
           ]
        }
     ]
  }

如果一个用户尝试一次更新,则更新文档不会有任何问题。但是,如果有多个用户(最多可能是10个用户),那么我该如何更新同一个文档。

在这种情况下我该怎么办?

N:B数据是精确的,但我的结构完全相同。

编辑:所以现在我想我可以同时更新多个用户在同一个集合中的两个不同文档吗?

1 个答案:

答案 0 :(得分:2)

您可以包含一个版本字段,该字段随每次更新而增加(在您的更新和查询过滤器中它将是另一个$ inc)。然后,如果有人将文档更新为远离您的版本,则无法进行更新。如果你正在使用Morphia,@Version注释会透明地为你处理这个问题。