1

次のような IP アドレス ドキュメントのスタックを含む Couch データベースがあります。

{
   "_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_levelview クエリ パラメータを使用して、各オクテットに基づいてグループ化します。

  • 1 = 第 1 オクテットに基づくグループ
  • 2 = 1 番目から 2 番目のオクテットに基づくグループ
  • 3 = 1 ~ 3 オクテットに基づくグループ
  • 4 = オクテット全体に基づくグループ

group=trueこの場合、機能的にはgroup_level=4

于 2012-10-19T17:35:59.000 に答える