我有一个进程,我目前正在使用 Mongo 的 Map/Reduce 框架,但它的性能不是很好。这是一个非常简单的聚合,我将 3 个字段分桶,返回 4 个不同字段的总和,并传递另外 4 个字段的值(在每个桶中都是常数)。
由于 [ MongoDb 2.2、2.4 和 2.6 中的 Map-Reduce 性能] 中描述的原因,我想将其转换为聚合框架以获得更好的性能,但我认为有 3 件事会阻碍:
- 总结果可能很大,超过 Mongo 的 16MB 限制,即使结果中的任何一个文档都非常小。
- 我可以直接映射/减少到另一个集合,但聚合框架只能内联返回结果(我认为?)
- 对于随着更多数据到达源集合中的增量更新,我可以映射/减少
MapReduceCommand.OutputType
(在 Java 中)设置为REDUCE
,完全匹配我的用例,但我在聚合框架中看不到相应的功能。
在聚合框架中是否有解决这些问题的好方法?服务器现在是 2.4.3 版本 - 如果有新功能,我们可能会根据需要进行更新。