Using C# MongoDB LINQ with discriminator描述了我想要做的事情,但我正在尝试使用新的官方2.0.1驱动程序。
我有一系列子类,它们的专用属性都继承自包含公共属性的基类。判别器属性似乎很好,我已经使用子类型成功保存了文档的混合。
我期望接下来能做的是一个类似于以下的查询:
var subsetB = db.GetCollection<BaseClass>("Documents").AsQueryable<BaseClass>().OfType<SubclassB>();
获取SubclassB类型的所有文档。但是,我发现的文档和文章中提到的AsQueryable()和OfType()方法似乎无法使用。
我是否遗漏了某些内容,或者是否有其他推荐的方法可以通过新驱动程序实现此目的?
答案 0 :(得分:3)
对此没有特别的支持。
您需要为鉴别字段_t
明确添加过滤器。
var results = await collection.Find(Builders<SubclassB>.Filter.Eq("_t", nameof(SubclassB))).ToListAsync();