C# 多个字段不起作用的UpdateDefinition

C# 多个字段不起作用的UpdateDefinition,c#,.net,mongodb,asp.net-core,mongodb-query,C#,.net,Mongodb,Asp.net Core,Mongodb Query,我尝试使用C#mongodb驱动程序构建更新请求 我只想在字段不为空时更新它。以下是代码: public void Replace(Core.Entity.Project project) { var filter = Builders<Entity.Project>.Filter.Eq(x => x.ProjectNumber, project.ProjectNumber); var update = BuildUpdateRequest(project);

我尝试使用C#mongodb驱动程序构建更新请求

我只想在字段不为空时更新它。以下是代码:

public void Replace(Core.Entity.Project project)
{
    var filter = Builders<Entity.Project>.Filter.Eq(x => x.ProjectNumber, project.ProjectNumber);
    var update = BuildUpdateRequest(project);

    _mongoCollection.UpdateOne(filter, update);
}

private UpdateDefinition<Entity.Project> BuildUpdateRequest(Core.Entity.Project project)
{
    var builder = Builders<Entity.Project>.Update;
    var update = builder.Set(x => x.LastUpdateDate, DateTime.UtcNow);

    if (!string.IsNullOrEmpty(project.UserId))
    {
        update.Set(x => x.UserId, project.UserId);
    }
}
public void Replace(Core.Entity.Project)
{
var filter=Builders.filter.Eq(x=>x.ProjectNumber,project.ProjectNumber);
var update=BuildUpdateRequest(项目);
_mongoCollection.UpdateOne(过滤器,更新);
}
私有更新定义BuildUpdateRequest(Core.Entity.Project)
{
var builder=Builders.Update;
var update=builder.Set(x=>x.LastUpdateDate,DateTime.UtcNow);
如果(!string.IsNullOrEmpty(project.UserId))
{
update.Set(x=>x.UserId,project.UserId);
}
}
不幸的是,当我运行单元/集成测试时,数据没有更新。
您有更好的方法使用这些对象吗?

好的,很简单。修正了它:

update = update.Set(x => x.UserId, project.UserId);

也许只是将这些条件添加到过滤器中?然后,仅当文档对更新有效时,才会匹配该文档。