MongoDB聚合框架组性能

时间:2013-05-11 18:52:27

标签: mongodb performance aggregation-framework

使用MongoDB聚合框架显然$group函数是瓶颈。通过在某些查找查询中使用explain(),我可以定制索引以显着减少表扫描,但$group似乎没有考虑发生的任何$sort之前,即使我最终按字段进行排序,它最终也会执行$group

除了简单地减少结果集外,是否有任何实用的方法来改善$group函数的性能?我几乎想要利用排序,只是在我自己的应用程序中执行$group,但必须有一个优雅且高性能的解决方案使用该框架。

我注意到随着$match的结果集增加,$group时间也会增加。

我的文档基本上就是这样

{
 a: (String)
 b: (String)
}

pipeline看起来像

$match :{ a : 'frank'}
$sort : { b : 1 }
$group : { _id : { $b : b }}

令我惊讶的是,因为我认为当它到达组时,数据被加载到内存中,并且由于字段被索引,因此几千条记录不需要花费那么多时间来加载进入记忆。情况不是这样吗?

似乎$sort对整体效果没有影响。有没有办法使用索引,以及管道的先前功能来提高$group的性能?此外,$group是否保留在之前功能的结果集中,或者是否会返回整个表格扫描(我非常确定,或者希望不是这样)

0 个答案:

没有答案