先上图:
现在已知数据库中有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)的,一并看看呗~~