【问题标题】:Using C# MongoDB v2 driver with discriminator and polymorphism使用具有鉴别器和多态性的 C# MongoDB v2 驱动程序
【发布时间】:2015-08-24 23:49:13
【问题描述】:

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

我有一系列子类,它们的特殊属性都继承自包含公共属性的基类。鉴别器属性看起来不错,我已经使用子类型成功保存了混合文档。

我希望接下来能够做的是类似于以下内容的查询:

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

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

我是否遗漏了什么,或者是否有其他推荐的方法可以使用新驱动程序实现这一目标?

【问题讨论】:

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


    【解决方案1】:

    对此没有特别的支持。

    您需要为鉴别器字段显式添加过滤器_t

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

    【讨论】:

    • 谢谢你 - 你帮我解决了基本问题。但是,我会更好吗,暂时使用版本 1 驱动程序,因为很多示例、博客文章等似乎都涵盖了这一点。我发现 v2 驱动程序及其异步编程模型真的很难掌握作为 MongoDB 的新手。我欢迎对此提出建议。
    • @BobGear 好吧,这真的取决于你。旧的已弃用,它不支持异步等待。如果您不关心这一点,我想您可以等到有更多信息后再向上移动。您还可以参加免费的在线 MongoDB 课程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多