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" }}})
しかし、たとえば "product" : "ssh" を含むすべてのホストを検索する方法はわかりませんが、構文エラーが発生します
db.hosts.find({ ip : "127.0.0.1"}, { services.port_info : { $elemMatch : { product : "ssh" }}})
次に、「port_info」に別の要素を追加したいとしましょう。おそらくプロトコルのようなものです:tcp
ip : 127.0.0.1 で製品が ssh の update のようなものを言う場合、更新を行うにはどうすればよいですか?