我正在使用最新的MongoDB C#驱动程序,我遇到了一个问题。我正在尝试更新Mongo文档中的字段,并通过它的id字段识别该文档。我编写了类似的查询,根据其他字段过滤文档,但对于某些原因,它不能与id字段一起使用。
我的查询:
public static async Task<bool> Delete(string Guid)
{
var database = new MongoDB();
var thingsCollection = database.Things;
var builder = Builders<ThingsModel>.Filter;
var filter = builder.Eq("_id", Guid);
var update = Builders<ThingsModel>.Update
.Set("IsActive", false);
var updateResult = await thingsCollection.UpdateOneAsync(filter, update);
return true;
}
我意识到我每次都回归真实,但那只是在那里进行测试。从Mongo返回的updateResult对象表示它没有找到任何匹配,尽管在带有Guid作为参数的Guid传递的thingsCollection中是一个东西。我还将Guid属性标记为集合中的ID字段,如下所示:
[BsonId]
public Guid Guid { get; set; }
另外我知道我需要将名称从Guid更改为其他内容,因为它不好练习,但一次只有一件事:)我感谢任何帮助!
答案 0 :(得分:1)
您的命名可能存在问题。
使用linqu语法我们可以使用它(_id用作id字段):
var update = Builders<ThingsModel>.Update.Set(a => a.IsActive, false);
var result = _collection.UpdateOne(model => model._id == _id, update);