0

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

4

1 回答 1

1

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

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

于 2013-02-22T08:46:12.293 回答