1

訪問統計をcouchdbドキュメントに保存し、一定期間の一意のIPの数を表示したいのですが、設計ドキュメントは次のとおりです。

{
"unique": {
   "map": "function(doc){ if (doc.type=='stats'){ emit([doc.date], doc.ip); } }"
}

startKey と endKey を使用して開始日と終了日を示していますが、一意の IP をカウントする方法が見つかりません

4

1 に答える 1

0

一意の値を取得する唯一の方法は、一意にしたい値をキーに入れ、結果をグループ化することです。

次に、カウントを取得するには、reduce 関数を作成する必要があります (ただし、この特定の状況では、CouchDB に既に組み込まれています)。

したがって、ビューを次のように変更します。

{
  "unique": {
    "map": "function(doc){if(doc.type=='stats'){emit([doc.date, doc.ip], 1);}}"
    "reduce": "_sum"
}

doc.dateこれは、一意のIPの数を見つけるために必要な粒度のみを持ち、適切な語彙順序でソートされることを前提としています。たとえば、「2012-07-01のような値を持っています。 "、"7/1/2012" のような値ではありません)

次に、このクエリを次のように実行できます。

http://your.server/your_db/_design/your_views/_view/unique?startkey=["2012-07"]&endkey=["2012-08"]&group=true

[]"(ブラウザを使用していない限り、sをURLエンコードする必要があります(ブラウザが自動的に行います))

于 2012-07-01T21:00:09.540 に答える