如何使用mongoose鉴别器查询MongoDB集合

时间:2017-04-26 21:38:12

标签: mongodb mongoose discriminator

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

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

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

1 个答案:

答案 0 :(得分:0)

根据documentation

  

mongoose的方式告诉了不同的区别   鉴别器模型是由'鉴别器密钥',即__t by   默认。 Mongoose将一个名为__t的String路径添加到您的模式中   它用于跟踪此文档是哪个鉴别器。

此外,mongoose将具有鉴别器的文档保存到单个集合中。

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