mongodb group 查询

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;
         }
    }
});

你可能感兴趣的:(工具,mongodb)