尝试更新单个记录时,我遇到了非常奇怪的行为。我使用 UpdateOne() 方法,它在 99% 的情况下按预期工作,但有时我会得到以下结果:如您所见,MongoDB 能够找到我的记录,但它没有更新。我试图改变写关注,根据文档,这可能会有所帮助:collection.WithWriteConcern(WriteConcern.WMajority.With(journal: true))但它没有。以下是我更新记录的方法:collection.UpdateOne(x => x.Id == _myObject.Id.AsObjectId, updateDef);更新定义:var updateDef = new UpdateDefinitionBuilder<IndexedProfileData>().Set(x => x.Property.ChildCollection, newCollection);如果有人能向我解释为什么会发生这种情况以及如何解决这种行为,我将不胜感激。
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
如果文档已经处于“更新”状态,MongoDB 将不会更新它。
例如,使用mongo外壳:
> db.test.find()
{"_id": 0, "a": 0}
> db.test.update({_id:0}, {$set:{a:1}})
WriteResult({
"nMatched": 1,
"nUpserted": 0,
"nModified": 1
})
由于a是0并且我们设置a为1,因此更新修改了文档 ( nMatched: 1, nModified: 1)。
> db.test.find()
{"_id": 0, "a": 1}
> db.test.update({_id:0}, {$set:{a:1}})
WriteResult({
"nMatched": 1,
"nUpserted": 0,
"nModified": 0
})
如果我们再次尝试设置a为1,则更新语句找到了该文档,但意识到它不需要做任何工作 ( nMatched: 1, nModified: 0)。
- 1 回答
- 0 关注
- 492 浏览
添加回答
举报
0/150
提交
取消