【发布时间】:2017-07-18 15:05:16
【问题描述】:
我收集了 1000 万条类似的记录。
{
"_id" : ObjectId("596dd10bbd1a6628ace1c14c"),
"X" : 13212,
"Z" : 173836,
"userID" : 9354785
}
用户 ID 是唯一的。我必须计算 X 的平均值和 Z 的总和。我可以使用以下 mapReduce 函数计算 Z 的总和
var mapFunction1 = function() {
emit(this.userID, this.Z);
};
var reduceFunction1 = function() {
return Array.sum(Z);
};
db.transaction.mapReduce(
mapfunction1,
reduceFunction1,
{out:"mapreduce"}
)
如何计算 X 的平均值?
我尝试了 Array.avg(Z),但它返回的输出与 sum(Z) 相同。
【问题讨论】:
-
标题是“Hadoop” MapReduce,但这个例子看起来像一个 MongoDB MapReduce。你能澄清一下这个问题吗?是否涉及 Hadoop,或者这是 MongoDB 的问题?