MongoDB MapReduce - 减少 BSONElement
MongoDB MapReduce - Reducing BSONElement
我正在尝试在这样的文档中应用 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,
...
}
}
我保存信息的每一天都有文件,每个值代表一个读数。我的 objective 是在本文档中应用一个 mapReduce 函数,这样我就可以检索指标,例如每天的平均数、每个 ID 每天的平均数等等。问题是我不知道该怎么做,因为值键包含一个 BSONElement。
目前我的地图功能如下:
var mapFunction = function() {
emit(this.subscriptionID, this.values);
}
根据我的理解,它将被发送到 reduce 函数中存储在 values 中的所有值,但是同样,由于它是一个 BSON 元素,我该如何进行这些计算?一个 foreach 遍历每个?性能很重要..
提前致谢。
所以我几天前得到了,如果有人需要的话,我会把它留在这里。
var mapFunction = function() {
for (var key in this.values) {
emit(this.subscriptionID, this.values[key]);
}
}
在这种特殊情况下,此函数会将映射到一个 subscriptionID 的所有值作为数组发送到 reduce 函数。对于问题中的值,地图将发送如下内容:
[0.06232154558520836, 0.06232154558520836, 0.06232154558520836, ...]
希望对大家有所帮助。
我正在尝试在这样的文档中应用 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,
...
}
}
我保存信息的每一天都有文件,每个值代表一个读数。我的 objective 是在本文档中应用一个 mapReduce 函数,这样我就可以检索指标,例如每天的平均数、每个 ID 每天的平均数等等。问题是我不知道该怎么做,因为值键包含一个 BSONElement。
目前我的地图功能如下:
var mapFunction = function() {
emit(this.subscriptionID, this.values);
}
根据我的理解,它将被发送到 reduce 函数中存储在 values 中的所有值,但是同样,由于它是一个 BSON 元素,我该如何进行这些计算?一个 foreach 遍历每个?性能很重要..
提前致谢。
所以我几天前得到了,如果有人需要的话,我会把它留在这里。
var mapFunction = function() {
for (var key in this.values) {
emit(this.subscriptionID, this.values[key]);
}
}
在这种特殊情况下,此函数会将映射到一个 subscriptionID 的所有值作为数组发送到 reduce 函数。对于问题中的值,地图将发送如下内容:
[0.06232154558520836, 0.06232154558520836, 0.06232154558520836, ...]
希望对大家有所帮助。