使用 MongoDB 存储来自 nmap 网络扫描的结果,并尝试找出构建数据的最佳方法。
目前我有以下内容:
{
"_id" : ObjectId("525f94097025166583e18eba"),
"ip" : "127.0.0.1",
"services" : [
{
"port" : "22",
"port_info" : [
{
"product" : "ssh",
"version" : "1.0"
}
]
},
{
"port" : "80",
"port_info" : [
{
"product" : "apache",
"version" : "2.0"
}
]
}
]
}
例如,我可以找到打开端口 22 的主机,例如仅针对 127.0.0.1 的主机
db.hosts.find({ ip : "127.0.0.1"}, {"services" : { $elemMatch : { port : "22" }}})
但我不确定,例如如何找到所有具有“产品”的主机:“ssh”尝试确实如此,但我得到一个语法错误
db.hosts.find({ ip : "127.0.0.1"}, { services.port_info : { $elemMatch : { product : "ssh" }}})
然后假设我想向“port_info”添加另一个元素,可能类似于协议:tcp
我将如何进行更新,我会说类似 update where ip : 127.0.0.1 and product is ssh?