我正在尝试在这样的文档中应用map reduce函数:
{
"_id": 2,
"timestamp_day": "1/20/2005 12:00:00 AM",
"variableID": "GUID",
"subscriptionID": "1",
"unit": "kWh",
"timezone": "UTC",
"sum": 0,
"numberOfRecords": 96,
"values": {
"1": 0.06232154558520836,
"2": 0.06232154558520836,
"3": 0.06232154558520836,
"4": 0.06232154558520836,
"5": 0.06232154558520836,
"6": 0.06232154558520836,
"7": 0.06232154558520836,
"8": 0.06232154558520836,
"9": 0.06232154558520836,
...
}
}
我每天都有文件保存信息,每个值代表一个阅读。我的目标是在本文档中应用mapReduce函数,以便我可以检索每天平均值,每天每个平均值等平均值等指标。问题是我不知道该怎么做,因为values键包含一个BSONElement。
到目前为止,我的地图功能如下:
var mapFunction = function() {
emit(this.subscriptionID, this.values);
}
根据我对此的理解,它将被发送以减少存储在值中的所有值的功能,但同样,因为它是BSON元素,我该如何进行这些计算?一个foreach经历每一个?表现很重要..
提前致谢。
答案 0 :(得分:0)
所以我几天前就得到了,如果有人需要,我会留在这里。
var mapFunction = function() {
for (var key in this.values) {
emit(this.subscriptionID, this.values[key]);
}
}
在此特定情况下,此函数将向reduce函数发送映射到一个subscriptionID的所有值作为数组。对于问题中的值,地图将发送如下内容:
[0.06232154558520836, 0.06232154558520836, 0.06232154558520836, ...]
希望它有所帮助。