我有一组文档,其中每个文档代表IPV6的网络子网,如下所示,
如何识别给定地址(2001:0D38:ABCD:0012:0:0:0:1)是否属于mongodb中配置的子网?
由于mongo db不支持大整数数据类型,我无法将IPV6地址转换为整数并像IPV4一样存储在DB中。
答案 0 :(得分:0)
如果您可以将文档中子网的最小和最大地址存储为十进制字符串,例如:
{
mask: '2001:0D38:ABCD:0012::0/64',
minIP: '42540756323247557835581172037552439296',
maxIP: '42540756323247557854027916111261990911'
}
查找包含IP' 2001:0D38:ABCD:0012:0:0:0:1'的所有文档的查询就像
一样简单db.collection.find({
minIP: {$lte: '42540756323247557835581172037552439297'},
maxIP: {$gte: '42540756323247557835581172037552439297'}
})