如何获取mongodb中每个日期的记录计数? [英] How to get the count of records on each date in 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屋!