问题陈述
如何处理同一集合和同一文档上的并发更新命令。
当前数据库结构
编辑 - 结构已更改
{
"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 数据是准确的,但结构与我完全相同。
编辑:所以现在我想我可以由多个用户同时更新同一集合中的两个不同文档?
最佳答案
您可以包含一个版本字段,该字段会随着每次更新而递增(更新和查询过滤器中会多一个 $inc)。然后,如果有人更新了文档,使其与您所拥有的版本不同,则无法进行任何更新。如果您使用 Morphia,@Version
注释会透明地为您处理此问题。
关于java - 并发更新同一个集契约(Contract)一个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30193283/