Mongodb检索子阵列,聚合性能

时间:2016-06-23 18:51:41

标签: mongodb aggregation-framework

我的架构是这样的:

Registration: {
    totalDue: Number,
    amountPaid: Number,
    charges: [
        {
            amount: Number,
            paymentMethod: String,
            status: String
        }
    ]
}

我正在构建一个报告工具,以便用户可以查询给定金额的费用。例如,我想以超过30的金额显示所有成功的收费。

我目前的查询是:

db.registrations.aggregate(
    {$match: {'charges.status':'succeeded', 'charges.amount': {$gt: 30}}},
    {$unwind:'$charges'}, 
    {$match: {'charges.status':'succeeded', 'charges.amount': {$gt: 30}}},
    {$project:{'charges':1}}
)

我得到了正确的结果,这是收费列表,但我也是mongodb的新手,所以我不确定是否有更好的方法来做到这一点。似乎有一种更有效的方式,然后使用相同的标准两次使用$ match,一次以正确的费用获得所有注册,然后再次过滤实际费用。

可能有数千个注册,每个注册都有0到几百个费用。

顺便说一句,当我在robomongo上运行查询时,它只显示了50个结果,并且没有其他页面供我滚动,任何想法为什么?我没有使用$ limit。

0 个答案:

没有答案