元データのフィールドの欠落を考慮して、醸造所の場所を出力します。国(country)、国と州(state)、国と州と都市(city)のいずれかで情報を作成し、出力します。
function (doc, meta) { if (doc.country, doc.state, doc.city) { emit([doc.country, doc.state, doc.city], 1); } else if (doc.country, doc.state) { emit([doc.country, doc.state], 1); } else if (doc.country) { emit([doc.country], 1); } }
このビューはreduce部分で、組込みの_count
関数を利用しています。reduceを使用しない場合は位置情報がそのまま出力されます:
{ "total_rows" : 1413, "rows" : [ { "value" : 1, "id" : "110f0b267e", "key" : [ "Argentina", "", "Mendoza" ] }, { "value" : 1, "id" : "110f035200", "key" : [ "Argentina", "Buenos Aires", "San Martin" ] }, … { "value" : 1, "id" : "110f2701b3", "key" : [ "Australia", "New South Wales", "Sydney" ] }, { "value" : 1, "id" : "110f21eea3", "key" : [ "Australia", "NSW", "Picton" ] }, { "value" : 1, "id" : "110f117f97", "key" : [ "Australia", "Queensland", "Sanctuary Cove" ] } ] }
reduce()
を有効にすると、グループ化は、country、state、city毎のビール醸造所の数を報告するために使用することができます。例えば、グループレベルを2にすることで、countryとstate毎の数を出力します:
{"rows":[ {"key":["Argentina",""],"value":1}, {"key":["Argentina","Buenos Aires"],"value":1}, {"key":["Aruba"],"value":1}, {"key":["Australia"],"value":1}, {"key":["Australia","New South Wales"],"value":4}, {"key":["Australia","NSW"],"value":1}, {"key":["Australia","Queensland"],"value":1}, {"key":["Australia","South Australia"],"value":2}, {"key":["Australia","Victoria"],"value":2}, {"key":["Australia","WA"],"value":1} ] }