使用MongoDB和C#使用FindOne()时,有没有办法忽略在对象中找不到的字段?

例如,范例模型.

public class UserModel
{
    public ObjectId id { get; set; }
    public string Email { get; set; }
}

现在,我们还在MongoDB集合中存储了密码,但不想将其绑定到上面的OUT对象.当我们这样做的时候,

  var query = Query<UserModel>.EQ(e => e.Email, model.Email);
  var entity = usersCollection.FindOne(query);

我们得到以下错误

Element 'Password' does not match any field or property of class 

是否有必要告诉Mongo忽略它无法与模型匹配的字段?

推荐答案

是.只需使用BsonIgnoreExtraElements属性装饰您的UserModel类:

[BsonIgnoreExtraElements]
public class UserModel
{
    public ObjectId id { get; set; }
    public string Email { get; set; }
}

顾名思义,驱动程序会忽略任何额外字段,而不是抛出异常.更多信息请点击这里-Ignoring Extra Elements.

.net相关问答推荐

如何在PowerShell中隐藏任务延迟输出?

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

Npgsql Minimum Pool Size 似乎没有被考虑在内

查询 MongoDb 中嵌入式文档中的一个字段,该字段抛出调用运算符的左侧必须是对持久属性的直接访问

通过 System.Net.Mail 的 VB SMTP 停止工作

是否存在指定的(子)索引分隔符?

每 X 秒执行一次指定函数

在 C# 中将字节数组保存为磁盘上的文件的最有效方法是什么?

为什么我得到 411 Length required 错误?

Int 到字节数组

为什么 System.Timers.Timer 能在 GC 中存活,而 System.Threading.Timer 不能?

自定义属性的构造函数何时运行?

是否有 Linq 方法可以将单个项目添加到 IEnumerable

.NET 中的对象引用有多大?

将月份 int 转换为月份名称

如何从头开始以编程方式配置 log4net(无配置)

WebClient.DownloadString 由于编码问题导致字符损坏,但浏览器正常

Windows 服务在哪个目录中运行?

浮动与双重性能

在 WPF 中设置 Tab 键顺序