1

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

{
   "_id": "09eea172ea6537ad0bf58c92e5002199",
   "_rev": "1-67ad27f5ab008ad9644ce8ae003b1ec5",
   "1stOctet": "10",
   "2ndOctet": "1",
   "3rdOctet": "3",
   "4thOctet": "55"
}

这些文档由属于不同子网范围的多个 IP 组成。

我需要一种基于第 1、第 2、第 3 和第 4 个八位字节来减少/分组这些文档的方法,以便生成减少的子网列表。

以前有没有人做过这样的事情。

此致,

卡尔斯基

4

1 回答 1

1

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

首先,我会让你的文档结构看起来像这样:(如果你不能改变那个结构,那没什么大不了的)

{
   "ip": "10.1.3.55"
}

您的地图功能如下所示:

function (doc) {
    emit(doc.ip.split("."));
}

你需要一个reduce函数,我刚刚在我的测试中使用了这个

_count

然后我会使用group_level视图查询参数根据每个八位字节进行分组。

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

group=true在这种情况下,在功能上与group_level=4

于 2012-10-19T17:35:59.000 回答