MongoDB UpdateOne 不更新记录

尝试更新单个记录时,我遇到了非常奇怪的行为。我使用 UpdateOne() 方法,它在 99% 的情况下按预期工作,但有时我会得到以下结果:

http://img.mukewang.com/60bb39f50001e6ce03950129.jpg

如您所见,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);

如果有人能向我解释为什么会发生这种情况以及如何解决这种行为,我将不胜感激。


暮色呼如
浏览 493回答 1
1回答

qq_笑_17

如果文档已经处于“更新”状态,MongoDB 将不会更新它。例如,使用mongo外壳:> db.test.find(){"_id": 0, "a": 0}> db.test.update({_id:0}, {$set:{a:1}})WriteResult({&nbsp; "nMatched": 1,&nbsp; "nUpserted": 0,&nbsp; "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({&nbsp; "nMatched": 1,&nbsp; "nUpserted": 0,&nbsp; "nModified": 0})如果我们再次尝试设置a为1,则更新语句找到了该文档,但意识到它不需要做任何工作 ( nMatched: 1, nModified: 0)。
打开App,查看更多内容
随时随地看视频慕课网APP