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

标签 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# 对象替换文档,该对象将自动更新 其所有字段。问题是我想更新除用户 friend 之外的所有字段,因为它是一个包含与其他文档的对象关系的字段。当然,我可以手动更新我想要更新的每个字段,这里只有两个。

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

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

最佳答案

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

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

您还可以通过使用反射遍历字段来生成这样的更新命令。

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

关于c# - 如何更新 mongodb 中除指定字段之外的所有文档字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30493485/

相关文章:

c# - 从父窗体 c# 访问打开窗体上的方法

.net - 如何在 .NET 中获取本地 IP?

c# - 大量 bool 值的任何拳击问题?有什么选择吗?

node.js - node-mongodb-native如何在子文档上创建索引?

c# - 制作用户控制脉冲

c# - 使用 Roslyn 加载 sln 文件时编译失败,但在 Visual Studio 中编译

c# - 如何在 C# 中的 List<string> 中使用 Exist

c# - 如何防止我的代码被盗?

php - MongoDB php 扩展不适用于 Windows 7

php - io_stream.lo 安装 php 扩展时出现错误 1