我有一堆文件:
{"timestamp" : 1304535236, "value" : 2}
{"timestamp" : 1304532236, "value" : 5}
{"timestamp" : 1304535647, "value" : 1}
其中timestamp
是一个unix时间戳。我想总结每天value
的总数。注意:可能有许多文档的时间戳仅在不同时间在同一天。
如果我执行正常的mongo组查询,则每个时间戳总结一次,因为它们都是唯一的,这是无用的。
答案 0 :(得分:2)
您必须将timestamp
值转换为Date
个对象,以便按日分组。
使用Rachel的答案作为起点(在shell中):
db.test.group({
keyf: function(doc) {
var date = new Date(doc.timestamp*1000);
var dateKey = (date.getMonth()+1) + "/" +
date.getDate() + "/" +
date.getFullYear();
return {day: dateKey};
},
initial: {value: 0},
reduce: function(curr, result) { result.value += curr.value; }
});
返回:
[
{
"day": "5/4/2011",
"value": 8
}
]