mongo分组聚合(sum)在java中的用户:Aggregation agg = newAggregation();

先上图:



现在已知数据库中有3条数据,订单id对应了有3个商品(sku),根据商品id经行分组得到:

sql脚本:

db.applyReturn.aggregate([{ $match: { oid: "574417900cf233e45585ce1e" } },{$group : {_id : "$itemId", qua : {$sum : "$qua"}}}])




能够正常分组了,现在要怎么样把mongo的shell脚本转换成java代码呢????????



我想啊想,找啊找,各种找



终于在http://stackoverflow.com/questions/15624473/spring-data-mongodb-aggregation-framework-integration找到了:


现在sku(颜色,尺寸)不同还得继续分组,那么最终得到的java代码就是:


group中各个字段之间用“,”分割

agg = newAggregation(
						match(Criteria.where("oid").is(orderId)),
						group("oid","itemId","color","size").sum("qua").as("qua")
						);
				AggregationResults<ApplyReturn> results = mongoTemplate.aggregate(agg, "applyReturn", ApplyReturn.class);


在CMD中执行~

db.applyReturn.aggregate([ { "$match" : { "oid" : "574417900cf233e45585ce1e"}} , { "$group" : { "_id" : { "oid" : "$oid" , "itemId" : "$itemId","color":"$color","size":"$size"} , "total" : { "$sum" : "$qua"}}}])





终于大功告成了;



之前写了一个mongo的高级用法分组聚合(count)的,一并看看呗~~


http://blog.csdn.net/xb12369/article/details/49279825

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值