【发布时间】:2017-02-25 23:07:01
【问题描述】:
我写了一个 python 脚本来解析 Apache 日志并将其存储在 mongodb 中,格式如下:
{
"_id": ObjectId("589e77cf74eea90879f49c80"),
"http_version": "HTTP/1.1",
"time": ISODate("2017-02-11T02:32:46Z"),
"server_ip": "x.x.x.x",
"method": "GET",
"content_length": 529,
"referral": "-",
"uri": "/xxxxxxx.sdsd",
"agent": "Mozilla/5.00 (Nikto/2.1.5) (Evasions:None) (Test:map_codes)",
"status_code": 404
}
我需要找出每个 IP 地址的 404、200 和 302 个请求的计数。我又写了一个脚本来获取值并将其存储在字典中。但是,该脚本需要 2 分钟才能获取结果。
db=conn.http_bank
resp= db.http_bank.distinct("server_ip")
total_count=db.http_bank.find().count()
print total_count
def status_code(db,i):
dict_status_code={}
dict_status_code[i]={}
dict_status_code[i].update({'200':db.http_bank.find({"server_ip":i,"status_code":200}).count()})
dict_status_code[i].update({'404':db.http_bank.find({"server_ip":i,"status_code":404}).count()})
dict_status_code[i].update({'302':db.http_bank.find({"server_ip":i,"status_code":302}).count()})
print dict_status_code
print status_code(db,"x.x.x.x")
我需要更改 Python 代码逻辑还是应该更改在 MongoDB 中存储数据的方式?
非常感谢任何帮助。
【问题讨论】:
标签: python mongodb python-2.7 mongodb-query