在CouchDB中存储和分组IP地址

在CouchDB中存储和分组IP地址,couchdb,Couchdb,我有一个沙发数据库,其中包含一堆IP地址文档,如下所示: { "_id": "09eea172ea6537ad0bf58c92e5002199", "_rev": "1-67ad27f5ab008ad9644ce8ae003b1ec5", "1stOctet": "10", "2ndOctet": "1", "3rdOctet": "3", "4thOctet": "55" } 这些文档由多个属于不同子网范围的IP组成 我需要一种方法根据第1、第2、第3和第

我有一个沙发数据库,其中包含一堆IP地址文档,如下所示:

{
   "_id": "09eea172ea6537ad0bf58c92e5002199",
   "_rev": "1-67ad27f5ab008ad9644ce8ae003b1ec5",
   "1stOctet": "10",
   "2ndOctet": "1",
   "3rdOctet": "3",
   "4thOctet": "55"
}
这些文档由多个属于不同子网范围的IP组成

我需要一种方法根据第1、第2、第3和第4个八位字节对这些文档进行缩减/分组,以便生成一个缩减的子网列表

以前有人做过这样的事吗

致以最良好的祝愿


Carlskii

我不确定这是否正是您想要的,如果您能提供更多关于所需输出的示例,我可能会提供更多帮助

首先,我希望您的文档结构如下所示:(如果您不能更改该结构,那没什么大不了的)

您的映射函数如下所示:

function (doc) {
    emit(doc.ip.split("."));
}
您需要一个reduce函数,我刚刚在测试中使用了这个函数

_count
然后我将使用
group\u level
view查询参数根据每个八位字节进行分组

  • 1=基于第一个八位组的组
  • 2=基于第1-2个八位组的组
  • 3=基于第1-3个八位组的组
  • 4=基于整个八位字节的组

group=true
在本例中与
group\u level=4

功能相同,谢谢多米尼克-我将重新构建我的数据并尝试一下!
_count