gpt4 book ai didi

MongoDB 网络子网查找

转载 作者:可可西里 更新时间:2023-11-01 09:57:26 25 4
gpt4 key购买 nike

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

{'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 只是 int,子网掩码只是 int 的范围 - 它们按原样显示,以便人们可以阅读它们(以及其他原因)。我要做的是向我的 MongoDB 模式添加两个附加字段:startAddrendAddr。将它们表示为 int,它们将是您子网的起始地址和结束地址。

接下来,您可以在应用程序中将 IP 转换为 int。参见 here有关将 IP 转换为整数的信息,您没有提及您正在使用哪种语言编写应用程序,因此无法为您提供帮助。

最后在下面查询MongoDB

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

您还可以将这个新模式与一些应用程序级代码结合起来,以便在需要时轻松执行查找具有重叠子网的文档等操作。

关于MongoDB 网络子网查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com