(続)ドキュメントにタグをつける
昨日の続き。文字数の制限に引っかかったのかと思ったら、単にはてな記法の間違いで表示されていなかっただけだったorz
ついでに、もっとGROUP BYみたいな挙動を期待して、複数のタグを同時に指定することができるのかも試してみた。"tags"と"situations"というタグの組み合わせでGROUP BYしてCOUNT(*)するというもの。
//map function(doc) { if (doc.tags && doc.situations) { doc.tags.forEach(function(tag) { doc.situations.forEach(function(situation) { emit(tag + "," + situation, 1); }); }); } } //reduce function(keys, values) { return sum(values); }
できた。
{"rows":[ {"key":"DRAMA,alone","value":2}, {"key":"DRAMA,friends","value":1}, {"key":"DRAMA,lovers","value":1}, {"key":"INDIA,alone","value":1}, {"key":"INDIA,lovers","value":1}, {"key":"LOVE,alone","value":1}, {"key":"LOVE,lovers","value":1}, {"key":"USA,alone","value":1}, {"key":"USA,friends","value":1} ]}
ただ、これだとkeyの組み合わせを増やすたんびにmap関数を入れ子にしないといけないから面倒くさい。もっとスマートな方法もありそうな気がするが・・・