我有一个包含超过 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})
我该怎么做才能使聚合更快?
谢谢
最佳答案
看来您的查询与
相同db.data.count({"code":200})
您不需要为此进行聚合。尝试简单的计数(带索引)
关于mongodb 在巨大的数据集上聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527631/