0

使用 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保留在先前函数的结果集中,还是返回到整个表扫描(我很确定,或者希望不是这样)

4

0 回答 0