我有一个更新查询,证明受到竞争条件的限制,但我不知道为什么。
我们说我在mongodb有一个stuff: {
_id: 123
elements: [
{
_id: 456,
value: 'foo',
},
{
_id: 789,
value: 'bar'
},
]
}
集合。为了清楚起见,我使用数字ID。
element
现在,我想更新位于stuff
123下的Stuff
456上的值。
我认为这没关系(我使用的是猫鼬,因此是Stuff.update(
{
_id: 123,
'elements._id': 456
},
{
$set: {
'elements.$': {
_id: 456,
value: 'foobar',
something: 'else',
}
}
}
)
类):
456
但是,此查询似乎受到竞争条件的影响。我无法解释原因,但我可以证明并行触发该请求会弄乱我的数据;特别是如果我尝试同时更新元素789
和{{1}}。
谢谢!
PS:如果有任何相关性,我使用的是Mongoose