您的位置:首页 > 数据库 > Mongodb

mongodb的sum操作以及javaapi的实现

2016-02-15 14:54 513 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb spring mongodb