我在mongoDB上有几条记录。我需要知道每个日期的记录是否存在。我知道我们可以从_id字段获取日期。请帮我怎么做?
答案 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
},
...
]