0

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

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

4

1 回答 1

2

您可以为此使用MapReduce 。

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

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

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

官方文档中的第二个 MapReduce 示例非常接近您的用例,您应该可以将其用作参考。唯一的区别是您只需要一个平均值,而不是集合子集的单独平均值,因此您将替换key为常数值。

于 2013-07-28T11:00:07.707 回答