根据this link,MongoDB上的聚合框架有一定的局限性。
我想删除限制2,3。
我真的不在乎最终的尺寸是什么。我有很多内存和资源。
我不在乎它是否需要超过10%的系统资源。
我希望在我的申请中违反2,3。大多是2。
但我真的需要聚合框架。我有什么办法可以消除这些限制吗?
我一直在工作的应用程序有这些东西
选择mongodb以外的东西是不行的。我们已经使用MongoDB进行了太多的开发
是否可以更改Mongo的源代码?
答案 0 :(得分:2)
1)将聚合值直接保存到某个集合(如MapReduce)将在未来版本中发布,因此第一个解决方案只是等待一段时间:)
2)如果遇到第二或第三个限制,您可能需要重新设计数据方案和/或汇总管道。如果您使用大型时间序列,则可以减少聚合文档的数量,并在几个步骤中进行聚合(如MapReduce do)。我不能更具体地说,因为我不知道你的数据/用例(给我评论)。
3)您可以选择不同的框架。如果您熟悉MapReduce概念,则可以尝试Hadoop(它可以使用MongoDB作为数据源)。我没有MongoDB-Hadoop集成的经验,但我警告你不使用Mongo的MapReduce - 它对大型数据集很难。
4)您可以在代码中进行聚合,但是您应该使用一些“低级”语言或库。例如,pymongo(http://api.mongodb.org/python/current/)不适合这样的东西,但是您可以托管像monary(https://bitbucket.org/djcbeach/monary/wiki/Home)这样的东西来有效地提取日期和NumPy或Pandas以按照想要的方式聚合它。