Java连接MongoDB所需要实现得 org.springframework.data.mongodb.core.mapreduce.GroupBy

分组查询主要使用org.springframework.data.mongodb.core.mapreduce.GroupBy这个spring中的类:

例:

GroupBy groupBy = GroupBy.key("logonIp")
.initialDocument(initial)
.reduceFunction(reduceFunction);
GroupByResults results = mongoTemplate.group(criteria,
"sessions", groupBy, T.class);

GroupBy.key('key'): key是所进行分组字段的字段名;

initial : 初始化对象,所需要的函数可以为多个 如:{count:0,sum:0} 这么写;

reduceFunction: js函数,需要处理initial 所对应的函数;如:function(doc, out){out.count++} 这么算的是 计算多少条   // 如:function(doc, prev){ prev.sum += doc.counts;  }   这么算 的是求和  doc.counts  点后面的值是求和的值;

function(doc,result){}:

doc是根据查询条件(相当于where条件)获取的每一条数据,result是最后的查询结果,初始值就是initial对象;

查询操作:

mongoTemplate.group(criteria,"session", groupBy, T.class);

criteria:相当于SQL中的where条件;

session: 数据库中的表名;

groupBy: -以上;

T.class: 这里是数据库表对应的domain

 BasicDBList list = (BasicDBList)results.getRawResults().get("retval")

获取结果转为BasicDBList,"retval"是固定值,必须是它;

BasicDBObject obj = (BasicDBObject)list.get(i);  obj.getString("key");

key为initial中的key值,通过以上代码获取key值对应的value;

 

你可能感兴趣的:(工作学到)