如何处理类和MongoDB文档之间的差异

本文关键字:文档 MongoDB 之间 何处理 处理 | 更新日期: 2023-09-27 18:15:58

所以我有一个像这样的class:

public class Customer
{
    public ObjectId Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

让我们说,我添加一些这样的文档到MongoDB。但是,如果我从类中删除一些字段呢?例如,我只留下IdFirstName

然后,当我尝试以这样的方式接收数据时:

var result = db.Get<Customer>().AsQueryable<Customer>();

我有一个异常

"元素'LastName'不匹配类akmongolia . customer的任何字段或属性。"

我当然理解这一点,为什么会发生这种情况,但如何处理它?

顺便说一下,我的Get方法只返回
    return _database.GetCollection<Customer>("Customer");

如何处理类和MongoDB文档之间的差异

一种方法是将BsonIgnoreExtraElements属性添加到您的类:

[BsonIgnoreExtraElements]
public class Customer
{
    public ObjectId Id { get; set; }
    public string FirstName { get; set; }
}

另一个是使用类映射:

BsonClassMap.RegisterClassMap<Customer>(cm => {
    cm.AutoMap();
    cm.SetIgnoreExtraElements(true);
});

或者,您可以查看catch all字段