我有一堆文件:
{"timestamp" : 1304535236, "value" : 2}
{"timestamp" : 1304532236, "value" : 5}
{"timestamp" : 1304535647, "value" : 1}
timestamp
Unix时间戳在哪里。我想总结一下每天的总数value
。注意:可能有许多文档的时间戳落在同一天的不同时间。
如果我做一个普通的 mongo 组查询是每个时间戳的总和,因为它们都是唯一的,这是没有帮助的。
我有一堆文件:
{"timestamp" : 1304535236, "value" : 2}
{"timestamp" : 1304532236, "value" : 5}
{"timestamp" : 1304535647, "value" : 1}
timestamp
Unix时间戳在哪里。我想总结一下每天的总数value
。注意:可能有许多文档的时间戳落在同一天的不同时间。
如果我做一个普通的 mongo 组查询是每个时间戳的总和,因为它们都是唯一的,这是没有帮助的。
您必须将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
}
]