1

CouchDBデータベースに次のドキュメントがあります:-

{
   "_id": "c0d93b8f424037583b2fe71ea403044a",
   "name": "Joe",
   "country": "United Kingdom",
   "email": "joe@acme.com"
}
{
   "_id": "c0d93b8f424037583b2fe71ea403044d",
   "name": "Joe",
   "country": "United Kingdom",
   "email": "joe@acme.com"
}
{
   "_id": "c0d93b8f424037583b2fe71ea403044z",
   "name": "Joe",
   "country": "United Kingdom",
   "email": "joe@acme.com"
}
{
   "_id": "c0d93b8f424037583b2fe71ea403044x",
   "name": "Fred",
   "country": "France",
   "email": "Fred@acme.com"
}
{
   "_id": "c0d93b8f424037583b2fe71ea403044g",
   "name": "Fred",
   "country": "France",
   "email": "Fred@acme.com"
}
{
   "_id": "c0d93b8f424037583b2fe71ea403044p",
   "name": "Bill",
   "country": "Germany",
   "email": "Bill@acme.com"
}

このデータを要約して、国に基づいた円グラフを作成できるようにしたいのですが、国ごとのドキュメント数を取得するためのマップリデュースコードを作成するのに苦労しています。

誰かが私のためにこれに少し光を当てることができますか?

よろしくお願いします、

カールスキー

4

1 に答える 1

1

それはとても簡単です。

マップ関数は、をキーとして、 1を値として出力するだけです。

function(doc) {
  if (doc.country) {
    emit(doc.country, 1);
  }
}

これで、reduce 関数は単なる組み込み _sum関数になりました。

group_levelパラメータを 1 に設定してビューをクエリします。

GET /db/_design/app/_view/bycountry?group_level=1`

結果は次のようになります。

{
    "rows": [
        {"key": "France", "value": 2},
        {"key": "Germany", "value": 1},
        {"key": "United Kingdom", "value": 3}
    ]
}
于 2012-08-30T21:06:09.363 に答える