分组查询主要使用org.springframework.data.mongodb.core.mapreduce.GroupBy这个spring中的类:
例:
GroupBy groupBy = GroupBy.key("logonIp")
.initialDocument(initial)
.reduceFunction(reduceFunction);
GroupByResults<T> results = mongoTemplate.group(criteria,
"sessions", groupBy, T.class);
GroupBy.key('key'): key是所进行分组字段的字段名;
initial : 初始化对象,可理解为最后查询返回的数据初始化;
reduceFunction: js函数,用于对返回的结果进行处理操作;
function(doc,result){}:
doc是根据查询条件(相当于where条件)获取的每一条数据,result是最后的查询结果,初始值就是initial对象;
查询操作:
mongoTemplate.group(criteria,"session", groupBy, T.class);
criteria:相当于SQL中的where条件;
session: 数据库中的表名;
groupBy: -以上;
T.class: 这里是数据库表对应的domain
获取结果转为BasicDBList,"retval"是固定值,必须是它;
obj.getString("key");
key为initial中的key值,通过以上代码获取key值对应的value;
文章来源: https://blog.csdn.net/weixin_42726306/article/details/91398325