mongoTemplate.group分组查询
//查询条件
Criteria criteria = Criteria.where("version").is("202101011020"); criteria.andOperator(Criteria.where("packageStatus").is("0")); GroupBy groupBy=new GroupBy("province").initialDocument("{collection:[]}").reduceFunction("function(doc,pre){pre.collection.push({creationTime:doc.creationTime,cardId:doc.cardId,type:NumberInt(doc.type),status:NumberInt(doc.status)});}"); GroupByResults<MappedResult> results = mongoTemplate.group(criteria, "CARD_BLACK_DETAIL", groupBy, MappedResult.class); //province:分组的key
//initialDocument:分组后结果
//reduceFunction:想要返回的字段值,doc为源数据,pre为分组后要显示的数据
//MappedResult可以使用Document直接代替
如果要使用自定义的实体时,实体必须要和GroupByResults返回的要一致,即:分组的key:province和返回的结果collection,
见下图,否则的话查询出的mappedResults会为空,
如果不使用mappedResults也可以通过results.getRawResults().get("retval", ArrayList.class)来获取执行结果。
1.01^356=37.8
0.99^365=0.03
0.99^365=0.03