如何使用Mongoose在MongoDB中执行昂贵的“关系”查询?

时间:2017-08-22 21:32:33

标签: javascript node.js mongodb mongoose

我正在对使用mongo的电子商务的用户进行销售分析,我发现了这个性能问题:

我需要知道按创建日期过滤的一大堆用户在某个产品中花了多少钱。

简化我的用户模型就像这样

var userSchema = Schema({
    firstName: String,
    lastName: String
})

简单地将订单模型看起来像这样:

const orderSchema = Schema({
    totalAmount: String,
    user: ObjectId, 
    products: {
        reference: [
            {product: ObjectId, quantity: 3},
            {product: ObjectId, quantity: 2}
        ]
    }
})

没有从用户架构到订单架构的引用,因此对于具有8000个用户的数组,逐个异步地查找具有每个用户ID的所有订单,然后在订单内检查它们是否具有目标产品。更不用说进行全球计算..

这需要mongo永远,所以它不适合我。在这种情况下,有什么想法可以提高性能吗?

0 个答案:

没有答案