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对它的实现如下
例如: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; }
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 如何在 Fedora 上安装 MongoDB 服务器
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 如何在 Ubuntu 上安装 MongoDB
- 信息安全聚合 Sec-News 的重构之路
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- C#中使用1.7版本驱动操作MongoDB简单例子
- MongoDB系列教程(四):设置用户访问权限
- php实现的mongodb操作类实例
- 解决mongodb在ubuntu下启动失败,提示couldn‘t remove fs lock errno:9 Bad file descriptor的错误
- 在PostgreSQL的基础上创建一个MongoDB的副本的教程
- 关于mongoose连接mongodb重复访问报错的解决办法
- java操作mongodb示例分享
- php对mongodb的扩展(初出茅庐)
- 作为PHP程序员应该了解MongoDB的五件事
- 基于MySQL到MongoDB简易对照表的详解
- MongoDB入门教程之C#驱动操作实例
- MongoDB为用户设置访问权限
- MongoDB db.serverStatus()输出内容中文注释