2016-09-19 119 views
0

我想申请一个地图缩小这样的文件功能:MongoDB中的MapReduce - 减少BSONElement

{ 
"_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函数,以便可以检索像平均每天,平均每天每个ID等度量标准。问题是我不知道该怎么做,因为值键包含一个BSONElement。

到目前为止,我的地图功能如下:

var mapFunction = function() { 
    emit(this.subscriptionID, this.values); 
} 

以及通过什么我这个理解,它将被送往减少存储在值函数的所有值,但同样,因为它是一个BSON元素如何进行这些计算?每一个foreach都经历过?性能很重要..

在此先感谢。

回答

0

所以我得到了几天前,如果有人需要这个,我会留在这里。

var mapFunction = function() { 
    for (var key in this.values) { 
    emit(this.subscriptionID, this.values[key]); 
    } 
} 

在这种特殊情况下,此函数将发送给reduce函数将所有映射到一个subscriptionID的值作为数组发送。对于问题中的值,地图会发送如下内容:

[0.06232154558520836, 0.06232154558520836, 0.06232154558520836, ...] 

希望它能帮助别人。