测试数据
for(var i=1;i<20;i++){
var num=i%10;
db.test.insert({"_id":i,"name":"user_"+i,"age":num});
}
group分组
db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){
prev.num++
}})
key:指定分组的键
initial:相当于计数器,统计每个组中的记录数
$reduce:这个函数有两个参数,doc代表当前文档,prev代表累加器文档(相当于本组当前的结果)
prev.num++就是每次增加一个
db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){
prev.num++
},condition:{age:{$gt:2}}})
condition:分组的条件
db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){
prev.num++
},finalize:function(doc){doc.num=doc.num*2}})
finalize:对分组的结果再处理,测试时让num变成原来的两倍