MongoDB网络子网查找

诱饵汁

假设我们有一个文档集合,其中每个文档都表示一个网络子网,如下所示:

{'network':'10.0.0.0/24,'someattr':'aaa'}
{'network':'192.168.0.0/16','someattr':'bbb'}
{'network':'172.16.0.0/16','someattr':'ccc'}

有什么办法可以在MongoDB集合中查找单个ip地址(例如“ 10.0.100.50”)并标识其所属的子网/文档?

石匠

请记住,IP只是ints,子网掩码只是s的范围int-它们按原样显示,以便人类可以读取它们(还有其他原因)。我要做的是在MongoDB模式中添加两个附加字段:startAddrendAddr将它们表示为ints,它们将是您子网的起始地址和结束地址。

接下来,您可以int在应用程序中将IP转换为有关将IP转换为整数的信息,请参见此处。您没有提到您在编写应用程序时所用的语言,因此在此无济于事。

最后,查询以下内容的MongoDB

db.collection.find({startAddr: {$lte: <ip>}, {endAddr: {$gte: <ip>}}})

您还可以将此新模式与一些应用程序级代码结合起来,轻松地执行诸如查找具有重叠子网的文档之类的操作(如果需要)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章