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

cec*_*eco 7 .net c# 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; }
}
Run Code Online (Sandbox Code Playgroud)

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

但这个例子很简单,只是为了说明我的观点.实际上,字段更多,更新每个字段会更难.这将需要每条线路使用一条Set运营商.此外,必须以与更新自动生效相反的方式支持新添加的字段.

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

i3a*_*non 7

没有办法,使用提供的构建器进行"黑名单"更新,该更新仅排除特定字段.

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

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

但MongoDB驱动程序不提供内置的此类查询.