如何通过python和mongodb从json对象中的列表中获取值?

时间:2017-04-24 09:15:28

标签: python json mongodb

我有一个具有以下结构的mongodb数据库:

"addr1": {

"hostname": { "-name": "x" },
"os": {
  "-version": "x",
  "-acc": "x"
},
"ports":{ 
   "PORTNUMY" : {

    "service": "x",
    "version": "x"
  },
  "PORTNUMX" : {

    "service": "s",
    "version": "v"
  }
}

}

由以下寄存器组成:

{"ip": "X.X.X.X", "os accuracy": "96", "hostname": "control0.dnssw.net", "os": "Juniper SA2500 SSL VPN gateway", "ports": [{"product": "na", "version": "na", "protocol": "tcp", "port": "25", "service": "smtp"}, {"product": "na", "version": "na", "protocol": "tcp", "port": "80", "service": "http"}, {"product": "na", "version": "na", "protocol": "tcp", "port": "443", "service": "http"}, {"product": "na", "version": "na", "protocol": "tcp", "port": "465", "service": "smtps"}, {"product": "na", "version": "na", "protocol": "tcp", "port": "993", "service": "imaps"}, {"product": "na", "version": "na", "protocol": "tcp", "port": "995", "service": "pop3s"}]}

我在python中使用它来查找与某个IP地址匹配的寄存器:

todos = db.mapa.find({'addr': 'X.X.X.X'})

我想要的是检查有多少个ip,例如端口80打开。

有什么想法吗?我今天开始用json和mongodb使用python我用谷歌搜索但是我找不到任何直接的东西。

非常感谢!

1 个答案:

答案 0 :(得分:0)

考虑上面的json结构:

import json
jobj = json.loads(input_data)
port_count = 0
for i in jobj['ports']:
    if int(i['port']) == 80:
        port_count += 1
>>> print(port_count)
1