我知道MongoDB是一个NoSQL数据库,并且没有连接,但有一种方法可以在一个请求或一个查找中从两个或多个集合中获取数据。
我问这个,因为我不想做两个或更多的电话或要求找东西,我想提高性能。
例如
我有:
var dogSchema = {
dogName: String,
owner: {type: mongoose.Schema.Types.ObjectId, ref: 'Owner'}
};
var catSchema = {
catName: String,
owner: {type: mongoose.Schema.Types.ObjectId, ref: 'Owner'}
};
我希望找到特定所有者的所有宠物的名字,只需一个find()
答案 0 :(得分:1)
通常你不能这样做。 MongoDB的基本设计专注于始终只影响一个集合的查询。
有一个例外。 $lookup
运算符可以与另一个集合执行有限的左外连接。但这并不适用于这个问题的例子。
如果要一起搜索文档,请将它们放入同一个集合中。 MongoDB是一个异构数据库,它允许同一集合中的不同类型的文档。因此,将猫和狗存放在同一个集合Pets
中在技术上是可行的,并且很可能也具有实际意义(当然,取决于它们与您的业务逻辑的相似程度)。