【问题标题】:How to get values from a list inside a json object via python and mongodb?如何通过python和mongodb从json对象内的列表中获取值?
【发布时间】:2017-04-24 09:15:27
【问题描述】:

我有一个具有以下结构的 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 就在今天我用谷歌搜索但我找不到任何直截了当的东西。

非常感谢!

【问题讨论】:

  • 你可以在这里使用 python json 模块。
  • 我该怎么做?

标签: python json mongodb


【解决方案1】:

考虑到你上面的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2012-08-06
    相关资源
    最近更新 更多