JAVA mongodb 聚合几种查询方式详解聚合几种查询方式详解
主要介绍了JAVA mongodb 聚合几种查询方式详解,小编觉得挺不错的,现在分享给大家,也给大家做个参
考。一起跟随小编过来看看吧
一、一、BasicDBObject
整个聚合查询是统计用户的各种状态下的用户数量为场景:
1.筛选条件:筛选条件:
date为查询日期:
BasicDBObject Query = new BasicDBObject();
Query.put("time",new BasicDBObject("$gte", date + " 00:00:00")
.append("$lte", date + " 23:59:59"));
如果有多个条件:直接加Query.put("status", 0);
如果有OR筛选:
BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("status", new BasicDBObject("$exists",false)));
values.add(new BasicDBObject("status", 0));
Query.put("$or", values);
其中 new BasicDBObject("$exists",false)) 就是“status”不存在(mongodb文档可不等于实体的字段)
2.拼接拼接match
DBObject Match = new BasicDBObject("$match", Query);
将上一步的Query放入macth筛选中
3.拼接分组条件拼接分组条件
此步相当于SQL的Group By
BasicDBObject GroupBy = new BasicDBObject();// 分组条件
GroupBy.put("userId", "$userId");//根据用户ID来分组
同第一步的筛选一样,如果有多个分组可直接添加在后面:GroupBy.put("status", "$status");
4.分组后查询分组后查询
首先把分组拼接上:
DBObject Select = new BasicDBObject("_id", GroupBy);
如果我们要对分组后的数据进行操作:(这里是用户的统计数量)
Select.put("count", new BasicDBObject("$sum", 1));
5.拼接拼接$group
DBObject Group = new BasicDBObject("$group", Select);
至此。我们拼接,mongodb的语句到此结束
下面我们开始查询操作:
import com.mongodb.AggregationOutput;
import org.springframework.data.mongodb.core.MongoTemplate;
AggregationOutput Output = mongoTemplate.getCollection("这里是mongodb的数据表名")
.aggregate(Match, Group);
读取查询结果:
Iterable<DBObject> map = Output.results();
//遍历map
for (DBObject dbObject : map) {
//这里读取到的map为{"_id":{"userId":1,"status"0}}...
Map<String, Object> resultMap = (Map<String, Object>) dbObject.get("_id");
//这里截取掉.0
评论0