我正在尝试计算 Mongo 中 NumberLong 类型的数百万条记录的平均值。然而,由于尺寸的原因,聚合和 $avg 不起作用。
有什么好的方法可以解决吗?
您可以为此使用MapReduce 。
您的 map 函数将获取每个文档并发出一个包含两个字段的对象:一个字段value
具有您想要平均count
的值,另一个字段具有1
.
然后,您的 reduce 函数将汇总传递给它的所有对象的字段count
和字段value
,返回一个对象,表示汇总了多少文档以及它们的总和是多少。
然后,您的 finalize 函数将该值除以结果对象的计数并返回此数字。
官方文档中的第二个 MapReduce 示例非常接近您的用例,您应该可以将其用作参考。唯一的区别是您只需要一个平均值,而不是集合子集的单独平均值,因此您将替换key
为常数值。