如何更新除mongodb中指定的文档字段之外的所有文档字段

时间:2015-05-27 21:29:37

标签: c# .net mongodb mongodb-.net-driver

我提出了一个简单的模型:

public class UserDocument
{
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }

    public string DisplayName { get; set; }

    public List<string> Friends { get; set; }
}

我正在使用最新的C#驱动程序,该驱动程序能够使用C#对象替换文档,该对象将自动更新其所有字段。问题是我想更新除用户朋友之外的所有字段,因为它是包含与其他文档的对象关系的字段。当然,我可以手动更新我想要更新的每个字段,这里只有两个。

但这个例子很简单,只是为了说明我的观点。实际上,字段更多,更新每个字段会更难。这将需要每行一行才能使用Set运算符。此外,必须以相同的方式支持新添加的字段,而不是更新为自动工作。

有没有办法实现这一点 - 只需指定排除字段列表即可自动更新所有字段?

1 个答案:

答案 0 :(得分:5)

无法使用提供的构建器进行“黑名单”更新,该更新仅排除特定字段。

您可以查询旧文档,将这些字段的旧值复制到新实例,然后在数据库中完全替换它。

您还可以通过使用反射迭代字段来生成此类更新命令。

但MongoDB驱动程序不提供内置的这样的查询。