全表扫描上的聚合框架



我知道,如果有一个初始的$match管道来限制要聚合的集合,那么聚合框架是合适的。然而,有时过滤的集合可能仍然很大,比如大约200万,并且聚合将涉及$group。如果要求最多在5秒内输出结果,聚合框架是否适合处理这样的集合。目前我在一个节点上工作。通过在碎片集上执行聚合,性能是否会显著提高。

据我所知,唯一的限制是聚合的结果不能超过16MB的限制,因为它返回的是一个文档,这是MongoDB中文档的限制大小。此外,您不能使用超过机器总内存的10%,因为通常使用$match阶段来减少您使用的集合,或者使用$project阶段来减少每个文档的数据。

请注意,在分片环境中,在$group或$sort阶段之后,聚合会在将其发送到管道的下一阶段之前返回到MongoS。MongoS可能与您的应用程序在同一台机器上运行,如果处理不当,可能会影响应用程序的性能。

最新更新