mongodb的group查询
1,根据vfrom查询 类似mysql的 select sum(rmb) from charge_unkilled group by vfrom;
db.charge_unkilled.group({
key:{vfrom:true},
initial:{num:0,sum:0},
$reduce:function(doc,prev){
prev.num++;
prev.sum = prev.sum+Number(doc.rmb);--数字相加
},
condition:{rmb:{'$regex':'^[0-9]*$'}} --正则表达式判断rmb是数字
});
2,根据addTime查询,类似mysql的 select sum(rmb) from charge_unkilled group by DATE_FORMAT(addTime,’%m-%d-%Y’);
db.charge_unkilled.group({
$keyf:function(doc){
var date = doc.addTime.substring(0,10);--根据时间查询
return {dd:date};
},
initial:{num:0,sum:0},
$reduce:function(doc,prev){
prev.num++;
prev.sum = prev.sum+Number(doc.rmb);--数字相加
},
condition:{rmb:{'$regex':'^[0-9]*$'}} --正则表达式判断rmb是数字
});
3,类似mysql的 select sum(rmb) from charge_unkilled where (addTime between ‘2016-3-15’ and ‘2016-3-22’) group by DATE_FORMAT(addTime,’%m-%d-%Y’);
db.charge_unkilled.group({
$keyf:function(doc){
var date = doc.addTime.substring(0,10);
return {dd:date};
},
initial:{num:0,sum:0},
$reduce:function(doc,prev){
prev.num++;
prev.sum = prev.sum+Number(doc.rmb);
},
condition:{
$where:function(){
var start = new Date("2016-3-15");
var end = new Date("2016-3-22");
var date = new Date(this.addTime);
return date>start && date<end;
}
}
});