【问题标题】:UpdateDefinition with multiple fields not working具有多个字段的 UpdateDefinition 不起作用
【发布时间】:2019-12-05 09:21:42
【问题描述】:

我尝试使用 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);
    }
}

不幸的是,当我运行单元/集成测试时,数据没有更新。 你有更好的方法来使用这些对象吗?

【问题讨论】:

  • 也许只是将这些条件添加到过滤器中?那么只有当文档对更新有效时才会匹配。

标签: c# .net mongodb asp.net-core mongodb-query


【解决方案1】:

好的,这很容易。修复它:

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

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 2019-11-22
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2014-11-02
    • 2011-07-02
    相关资源
    最近更新 更多