0

根据此链接,MongoDB 上的聚合框架有一定的限制。

我想删除限制 2、3。

我真的不在乎结果集的大小。我有很多内存和资源。

而且我不在乎它是否占用超过 10% 的系统资源。

我希望在我的申请中同时违反 2、3。主要是2。

但我真的需要聚合框架。我能做些什么来消除这些限制吗?

  • 原因 *

我一直在工作的应用程序有这些东西

  1. 用户可以上传大型数据集
  2. 我们有一个菜单让他排序、汇总等
  3. 聚合目前没有任何限制,用户可以选择为所欲为。由于开发人员不知道数据并且可以按任意数量的列进行分组,因此应用程序可能会出错。

选择 mongodb 以外的东西是不行的。我们已经在 MongoDB 的开发中投入了太多的精力

是否建议更改 Mongo 的源代码?

4

1 回答 1

2

1) 将聚合值直接保存到某个集合(如 MapReduce)将在未来版本中发布,所以第一个解决方案只是等待一段时间 :)

2) 如果您遇到第二或第三限制,您应该重新设计您的数据方案和/或聚合管道。如果您使用大型时间序列,您可以减少聚合文档的数量并通过几个步骤进行聚合(如 MapReduce 所做的)。我不能说得更具体,因为我不知道你的数据/用例(给我评论)。

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 以按照需要的方式聚合它。

于 2013-06-17T10:47:33.820 回答