我有一个 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
最后它的工作。这是红宝石驱动程序的代码:
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