【发布时间】:2016-06-07 00:40:31
【问题描述】:
我知道 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() 中找到特定主人的所有宠物的名字
【问题讨论】:
-
你能正确解释用例吗?这两个集合是什么?
-
@SiddharthAjmera 请检查添加的示例
-
据我所知,您无法做到这一点。您必须同时拨打两个
find电话。 -
如果你真的想提高性能,那么你应该改变你的架构。我真的不认为需要两种不同的模式。您可以只为所有者提供一个模式,并将猫和狗作为嵌入的 JSON 对象嵌入到所有者文档内的
pets数组中 -
MongoDB 不支持 JOINS 的原因是因为 MongoDB 是为高性能和可扩展性而设计的,而 JOINS 不可扩展。