如何在Mongo中平均数百万行NumberLong?

时间:2013-07-28 09:15:51

标签: mongodb

我正在尝试计算Mongo中NumberLong类型的数百万条记录的平均值。 但是,由于尺寸的原因,聚合和$ avg不起作用。

有什么好方法可以解决它吗?

1 个答案:

答案 0 :(得分:2)

您可以使用MapReduce

您的地图函数将获取每个文档并发出一个包含两个字段的对象:一个字段value包含您想要平均的值,一个字段count的值为1

您的reduce函数将汇总传递给它的所有对象的字段count和字段value,返回一个对象,表示汇总了多少文档以及它们的总和。

然后,您的终结函数会将值除以结果对象的计数并返回此数字。

The second MapReduce example in the official documentation非常接近您的用例,您应该可以将其用作参考。唯一的区别是您只需要一个平均值,而不是单独的集合子集,因此您可以用常量值替换key