【问题标题】:Best way to save and perform sorting of an IP in a mongo db?在 mongodb 中保存和执行 IP 排序的最佳方法?
【发布时间】:2020-02-17 13:47:41
【问题描述】:
我在这里寻找几个问答,以了解在 mongo db 中保存和执行 IP 排序的最佳方法,但我无法找到解决方案。
首先:如何保存IP?细绳?诠释?其他?
第二:一旦保存(例如,假设我的 IP 从 10.1.0.20 到 10.1.1.255),我必须在我的数据库中获取“最高”IP 并递增一个一个的新的。我该怎么做?我的意思是,检索它的最佳方法是什么?执行是否正确
this.model.findOne().sort({"staticIp": -1}).exec();
【问题讨论】:
标签:
javascript
mongodb
typescript
mongoose
ip
【解决方案1】:
我当然没有完整的解决方案,但将 ip 保存为数组可以吗?
因为 ip 很容易放入数组中:
var ip = [127,0,0,1];
这样您就可以对第一个元素进行排序,然后如果第一个元素相同,则对第二个元素进行排序,依此类推,直到将它们全部排序。
如果有更多 mongodb 知识的人可以对此提供帮助,我们将不胜感激!
【解决方案2】:
(仅限 IPv4 信息,请参阅有关 IPv6 讨论的链接)
因此,在大多数情况下,没有掩码 1-32 的 IP 地址毫无价值。
这为您提供了有关主机所属子网的信息,并允许您按子网分组(取决于您的 c 用例)
现在您可以将它们存储为 32 位无符号整数
或作为一个
或二进制字符串
- 00001000 00001000 00001000 00001000
但在大多数系统中,没有掩码的 IP 地址就像没有街道地址的门牌号码。所以有了这个掩码,你可以做一些网络数学运算,得到同一网段上的所有主机,看看你还剩下多少空闲地址。
imo,使用无符号整数是要走的路,然后是第二个整数来存储掩码。然后可能使用排序插入/删除。
我会在 similar topic 上向您指出这个很好的答案
祝你好运!