C# 多个字段不起作用的UpdateDefinition
我尝试使用C#mongodb驱动程序构建更新请求 我只想在字段不为空时更新它。以下是代码: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);
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);
也许只是将这些条件添加到过滤器中?然后,仅当文档对更新有效时,才会匹配该文档。