我提出了一个简单的模型:
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
运算符。此外,必须以相同的方式支持新添加的字段,而不是更新为自动工作。
有没有办法实现这一点 - 只需指定排除字段列表即可自动更新所有字段?
答案 0 :(得分:5)
无法使用提供的构建器进行“黑名单”更新,该更新仅排除特定字段。
您可以查询旧文档,将这些字段的旧值复制到新实例,然后在数据库中完全替换它。
您还可以通过使用反射迭代字段来生成此类更新命令。
但MongoDB驱动程序不提供内置的这样的查询。