gpt4 book ai didi

c# - Mongo 更新响应说没有更新文档,但是文档在那里

转载 作者:IT老高 更新时间:2023-10-28 13:16:48 38 4
gpt4 key购买 nike

我使用的是 MongoDb 2.6.10 和 C# Driver 1.9.2。服务器有一个由两台服务器组成的副本集。

我的文件是格式。 itemId 是唯一的。

{
"itemID": 2314,
"Favorites": [1, 24, 26, 34]
}

然后我有代码来删除表单的收藏夹

var query = Query.EQ("itemID", itemId);
var result = collection.Update(query, Update.Pull("Favorites", favoriteIdToRemove));

每次之后,我检查 result.DocumentsAffected 是否等于 1。偶尔,该值会返回为 0。当我自己进入 MongoDB 时,我可以找到与 itemID 匹配的文档,我可以看到它试图在数组中删除的 favoriteId 仍然存在。 result.OK 为真,没有错误信息。

什么会导致这个失败?

最佳答案

我不是专家,但我的猜测是写入问题,因为在 MongoDB 中写入和更新文档有不同级别的保证。见 Write Concerns

所以不要使用 method :

MongoCollection.Update Method (IMongoQuery, IMongoUpdate)

最好用这个method而是:

MongoCollection.Update Method (IMongoQuery, IMongoUpdate, WriteConcern)

并指定 WriteConcern 为

WriteConcern.WMajority

这样更新保证最高。

关于c# - Mongo 更新响应说没有更新文档,但是文档在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819208/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com