你如何在mongo中按日期分组?

时间:2013-01-29 17:59:37

标签: mongodb pymongo mongodb-query

我有一堆文件:

{"timestamp" : 1304535236, "value" : 2}
{"timestamp" : 1304532236, "value" : 5}
{"timestamp" : 1304535647, "value" : 1}

其中timestamp是一个unix时间戳。我想总结每天value的总数。注意:可能有许多文档的时间戳仅在不同时间在同一天。

如果我执行正常的mongo组查询,则每个时间戳总结一次,因为它们都是唯一的,这是无用的。

1 个答案:

答案 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
  }
]