使用Mongo DB C#驱动程序更新Document by ID字段

本文关键字:Document by ID 字段 更新 驱动程序 Mongo DB 使用 | 更新日期: 2023-09-27 17:57:44

我正在使用最新的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对象表示,它没有找到任何匹配项,尽管它是thingsCollection中的一个对象,Guid作为参数传入。我还将Guid属性标记为集合中的ID字段,如下所示:

[BsonId]
public Guid Guid { get; set; }

此外,我知道我需要将名称从Guid更改为其他名称,因为这是一种糟糕的做法,但一次只能做一件事:)我感谢您的帮助!

使用Mongo DB C#驱动程序更新Document by ID字段

您的命名可能存在问题。

使用linqu语法,我们可以得到以下内容(_id用作id字段):

var update = Builders<ThingsModel>.Update.Set(a => a.IsActive, false); 
var result = _collection.UpdateOne(model => model._id == _id, update);

此处的完整代码