フィルター フィールドを含むドキュメントを含む MongoDB データベースがあります。ドキュメントは次のようになります。
{
"_id": ObjectId("503208f5b5db0135387d9249"),
"name": "name1",
"filter": "facebook"
} {
"_id": ObjectId("503208f5b5db0135387d9249"),
"name": "name2",
"filter": "twitter"
}
{
"_id": ObjectId("503208f5b5db0135387d9249"),
"name": "name3",
"filter": "twitter"
}
そして、種類別に数えたい。この例は次のようになります。
facebook => 1, twitter => 2
ruby コードでは、カウントが非常に遅いです。
フィルターは文字列で、何でもかまいません。例えば:
{facebook : 1203, twitter : 201, wherever : 200, othertype : 400}
私はmongoマッパー(ルビードライバー)を使用しています。
============== 編集3
最後にそれは働いています。ruby ドライバーのコードは次のとおりです。
def map
'function(){
emit(this.plataforma, 1);
}'
end
def reduce
'
function(prev, current) {
var n = 0;
current.forEach(function(v){
n+=v;
});
return n;
}'
end
def build
Mention.collection.map_reduce(map, reduce, :query => {})
end