【问题标题】:How to query MongoDB collection using mongoose discriminators如何使用猫鼬鉴别器查询 MongoDB 集合
【发布时间】:2017-09-24 11:46:27
【问题描述】:

我正在尝试使用 mongoose 从 Mongo 数据库中读取数据,其中模型使用了鉴别器继承功能,但数据库中的文档全部由另一个不使用 mongoose 的服务(使用 Java Mongo 驱动程序)插入它的鉴别器。当我尝试从数据库中读取数据时,我使用子类模型(使用鉴别器函数的那些)的所有查询都返回空数组。我认为这是因为 mongoose 期望这些文档包含鉴别器键,但是插入文档的服务不知道鉴别器键,因此没有在 mongoDB 文档上设置它们。

如何创建我的模型并使用鉴别器功能,以便它们仍然可以查询由其他服务插入的这些文档?

对于更多上下文,我想使用鉴别器,因为继承允许我清晰地构造我正在创建的模型的字段并定义特定于模型的静态方法,它让我不会编写重复的代码。如果有更好的方法可以在不使用 mongoose 内置的判别器模式的情况下实现这些目标,请分享!

【问题讨论】:

    标签: mongodb mongoose discriminator


    【解决方案1】:

    根据documentation

    猫鼬如何分辨不同的 鉴别器模型是由'鉴别器键',它是 __t by 默认。 Mongoose 将一个名为 __t 的字符串路径添加到您的架构中 它用于跟踪该文档是哪个鉴别器的实例。

    mongoose 还将带有鉴别器的文档保存到单个集合中。

    因此,为了访问文档,您需要保存 __t 参数,并检查您是否将具有相同鉴别器的模式保存到单个集合中

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 2018-08-21
      • 1970-01-01
      • 2017-04-18
      • 2017-04-03
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2022-11-10
      相关资源
      最近更新 更多