nosql写法
db.gm_qlxx.aggregate([
{ $match : {ctime : {$gte:new Date(2018,11,7), $lte:new Date(2020,11,7) } ,flowcode:{$nin:[null]}} },
{ $group : {_id:{netFlowdefCode:"$netFlowdefCode",djjg:"$djjg"}, num_total:{$sum:1} }},
{$sort:{"_id":1}}
]);
java写法
List<String> strings=new ArrayList<>(); Criteria criteria = Criteria.where("ctime").gte(startDate).lte(endDate).and("flowcode").nin(strings); Aggregation aggregation = Aggregation.newAggregation( Aggregation.match(criteria), Aggregation.group(Aggregation.fields("netFlowdefCode","djjg")).count().as("numTotal") ); AggregationResults<Map> results = mongoTemplate.aggregate(aggregation,"gm_qlxx",Map.class); //转换对象好操作 return MapToObject.parse(results.getMappedResults(),AggResult.class);
集合list<map> 转换list<Object> ,转对象为了方便取值
package com.greatmap.internet.estate.utils; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.PropertyUtils; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; /** * @author lxw * @date 2020/11/26 17:30 */ public class MapToObject { /** * 此方法实现JDBCTemplate * 返回的Map集合对数据的自动 * 封装功能 * List集合存储着一系列的MAP * 对象,obj为一个javaBean * @return */ public static List parse(List list, Class obj){ //生成集合 ArrayList ary = new ArrayList(); //遍历集合中的所有数据 for(int i = 0; i<list.size(); i++){ try { 生成对象实历 将MAP中的所有参数封装到对象中 Object o = addProperty( (Map)list.get(i),obj.newInstance() ); //把对象加入到集合中 ary.add(o); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //返回封装好的集合 return ary; } /**Map对象中的值为 name=aaa,value=bbb 调用方法 addProperty(map,user); *将自动将map中的值赋给user类 *此方法结合Spring框架的jdbcTemplete将非 *常有用 * @return封装好的对象 */ public static Object addProperty(Map map, Object obj){ //遍历所有名称 Iterator it = map.keySet().iterator(); while(it.hasNext()){ //取得名称 String name = it.next().toString(); //取得值 String value = map.get(name).toString(); try{ //取得值的类形 Class type = PropertyUtils.getPropertyType(obj, name); if(type!=null){ //设置参数 PropertyUtils.setProperty(obj, name, ConvertUtils.convert(value, type)); } }catch(Exception ex){ ex.printStackTrace(); } } return obj; } }