訪問統計をcouchdbドキュメントに保存し、一定期間の一意のIPの数を表示したいのですが、設計ドキュメントは次のとおりです。
{
"unique": {
"map": "function(doc){ if (doc.type=='stats'){ emit([doc.date], doc.ip); } }"
}
startKey と endKey を使用して開始日と終了日を示していますが、一意の IP をカウントする方法が見つかりません
訪問統計をcouchdbドキュメントに保存し、一定期間の一意のIPの数を表示したいのですが、設計ドキュメントは次のとおりです。
{
"unique": {
"map": "function(doc){ if (doc.type=='stats'){ emit([doc.date], doc.ip); } }"
}
startKey と endKey を使用して開始日と終了日を示していますが、一意の IP をカウントする方法が見つかりません
一意の値を取得する唯一の方法は、一意にしたい値をキーに入れ、結果をグループ化することです。
次に、カウントを取得するには、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エンコードする必要があります(ブラウザが自動的に行います))