mongodb聚合在庞大的数据集上

时间:2017-01-07 23:12:40

标签: mongodb aggregation-framework

我有一个拥有超过1亿个文档的mongodb数据库。我想做聚合,所以我可以提供文件的统计数据。 我的文件看起来像:

{
    "categ": "categ_4", 
    "code": 200, 
    "date": "01/01/2017", 
    "host": "www.myhost.com", 
    "hour": "19", 
    "http_ver": "HTTP/1.1", 
    "idate": 20170101, 
    "length": 21, 
    "protocol": "https", 
    "remote_ip": "111.22.333.44", 
    "resp_time": 0, 
    "time": "19:53:15", 
    "url": "my_url", 
}

聚合时,我在我的shell中执行这样的查询:

db.data.aggregate([{"$match": {"code":200}}, {"$group": {_id : "$code", total : {"$sum" : 1}}},{"$sort" : {_id: 1}}])

问题是计算需要很长时间。这太慢了。有没有办法加快这个操作? 我试图在"代码"上创建索引。领域但没有成功

db.data.createIndex({code:1})

我可以做些什么来加快汇总速度?

谢谢

1 个答案:

答案 0 :(得分:2)

似乎您的查询与

相同
db.data.count({"code":200})

你不需要聚合。尝试简单计数(带索引)