如何获取mongodb中每个日期的记录计数? [英] How to get the count of records on each date in mongodb?

查看:246
本文介绍了如何获取mongodb中每个日期的记录计数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在mongoDB上有几条记录.我需要知道每个日期的记录数.我知道我们可以从_id字段中获取日期.请帮助我该怎么做?

I have several records on the mongoDB. I need to know the no of records present on each date.I know that we can get the date from _id field.Please help me how to do this ?

推荐答案

您可以使用 MongoDB Map-Reduce功能,使用 ObjectID::getTimestamp()方法确定插入时间.

You can do it with MongoDB Map-Reduce feature, using ObjectID::getTimestamp() method to determine insertion time.

以下是这样做的示例:

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()方法将插入日期转换为ISO日期字符串

I'm using Date::toISOString() method to convert insertion date into ISO date string

2014-07-21T12:39:21.000Z

String::slice()方法取其中的前10个字符

and String::slice() method to take first 10 characters of it

2014-07-21

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

The resulting output of this Map-Reduce task should look like this:

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

这篇关于如何获取mongodb中每个日期的记录计数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆