【发布时间】:2026-02-22 12:45:01
【问题描述】:
我正在尝试用 map/reduce 计算一年的频率,这里是代码
map = %Q{
function(){
emit({}, {
year: this.birthdate.getFullYear(),
count: 1
})
}
}
reduce = %Q{
function(key, values){
var agg = { }
values.forEach( function(value){
if(agg[value.year]){
agg[value.year] += value.count
} else {
agg[key] = value.count
}
})
return agg
}
}
User.map_reduce(map, reduce).out(inline: true)
然后它返回
=> [{"_id"=>{}, "value"=>{"2004"=>2.0, "2002"=>1.0, "2005"=>1.0}}]
但我的数据库中有很多年,而这只是跟踪其中的 3 年。我该怎么做?
【问题讨论】:
-
您也可以使用聚合框架来执行此操作。你的查询模式是什么?你能不能把这些年插入和静态存储?
标签: mongodb mapreduce mongoid3