如何获取mongodb中每个日期的记录数?

时间:2014-08-20 14:54:23

标签: mongodb

我在mongoDB上有几条记录。我需要知道每个日期的记录是否存在。我知道我们可以从_id字段获取日期。请帮我怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用MongoDB Map-Reduce feature使用ObjectID::getTimestamp() method来确定插入时间。

这是一个这样做的例子:

db.runCommand({
  mapreduce: 'collection',
  map: function() {
    var created = this._id.getTimestamp();
    var date = created.toISOString().slice(0, 10);
    return emit(date, 1);
  },
  reduce: function(key, vals) {
    return Array.sum(vals);
  },
  out: {
    inline: 1
  }
})

我使用Date::toISOString() method将插入日期转换为ISO日期字符串

2014-07-21T12:39:21.000Z

String::slice() method获取前10个字符

2014-07-21

此Map-Reduce任务的结果输出应如下所示:

[
  {
    "_id" : "2014-07-21", // date
    "value" : 100011 // number of documents
  },
  ...
]