Java操作mongodb分组查询

直接上代码

//筛选条件对象
List<Bson> filter = new ArrayList<>();

//筛选条件1
if(startTime != null && endTime != null){
    filter.add(Filters.gte("occurTime",startTime));
    filter.add(Filters.lte("occurTime",endTime));
}
//筛选条件2
if(sex != null){
    filter.add(Filters.eq("sex",sex));
}


ArrayList<Bson> list = new ArrayList<>();
//先进行帅选,得出符合条件的数据
list.add(Aggregates.match(filter));
//再进行分组,拿出想要的字段值
//按照id进行分组,并统计每个分组中个数(在每个分组中通过id字段的值取获取总数)
list.add(Aggregates.group("$id", Accumulators.sum("id",1)));
//分组查询
AggregateIterable<Document> aggregate = collection.aggregate(list);

MongoCursor<Document> result = aggregate.iterator();
//遍历处理结果集
while (result.hasNext()){
    //拿到单个结果
    Document next = result.next();
    //处理。。。。
}