使用具有鉴别器和多态性的C#MongoDB v2驱动程序

时间:2015-08-24 08:56:14

标签: c# linq mongodb mongodb-.net-driver mongodb-csharp-2.0

Using C# MongoDB LINQ with discriminator描述了我想要做的事情,但我正在尝试使用新的官方2.0.1驱动程序。

我有一系列子类,它们的专用属性都继承自包含公共属性的基类。判别器属性似乎很好,我已经使用子类型成功保存了文档的混合。

我期望接下来能做的是一个类似于以下的查询:

  var subsetB = db.GetCollection<BaseClass>("Documents").AsQueryable<BaseClass>().OfType<SubclassB>();

获取SubclassB类型的所有文档。但是,我发现的文档和文章中提到的AsQueryable()和OfType()方法似乎无法使用。

我是否遗漏了某些内容,或者是否有其他推荐的方法可以通过新驱动程序实现此目的?

1 个答案:

答案 0 :(得分:3)

对此没有特别的支持。

您需要为鉴别字段_t明确添加过滤器。

var results = await collection.Find(Builders<SubclassB>.Filter.Eq("_t", nameof(SubclassB))).ToListAsync();