mongodb的sum操作以及javaapi的实现

来源:互联网 发布:淘宝售后服务评论 编辑:程序博客网 时间:2024/05/21 11:35


mongodb中对某一个字段的求和操作是通过 aggregate 来实现的:

   例如:db.successCard.aggregate({$group:{_id:null,moneysum:{$sum:"$money"}}});

   上述语法的解释:$group 分组  _id表示分组的字段(null表示不分组),  moneysum自定义的总和字段, $sum 表示求和 , $money 其中money表示被求和的字段

   注意:被计算的字段必须是 整型,long或者浮点型


java对它的实现如下

/** * 计算某个字段是和 * @param collection * @param filedName * @return */public double sumField(String collection,String filedName,Criteria criteria) {  double total = 0l;          String reduce = "function(doc, aggr){" +                  "            aggr.total += parseFloat((Math.round((doc." + filedName + ")*100)/100).toFixed(2));" +                  "       }";          Query query = new Query();        if(criteria!=null){        query.addCriteria(criteria);           }        DBObject result = mongoTemplate.getCollection(collection).group(null,                   query.getQueryObject(),                   new BasicDBObject("total", total),                  reduce);                    Map<String,BasicDBObject> map = result.toMap();          if(map.size() > 0){              BasicDBObject bdbo = map.get("0");              if(bdbo != null && bdbo.get("total") != null)                  total = bdbo.getDouble("total");          }          return total;      } 


0 0
原创粉丝点击