Mongodb java group by 查询

来源:互联网 发布:淘宝的苹果旗舰店 编辑:程序博客网 时间:2024/05/02 00:31

mongondb java  group  总结:



// 获取集合,就是你要查询的表

        DBCollection myColl = getCollection();
        //分组
        DBObject groupFields = new BasicDBObject( "_id", "$"+groupByPro);//groupByPro为数据库中的字段,即要进行分组的依据

       //对应的个数
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        DBObject group = new BasicDBObject("$group", groupFields );
        //where条件
        DBObject match = new BasicDBObject();
       //根据需要条件查询
       
            match.put("数据库中的字段", 参数);

            //for example

            match.put("CREATE_TIME", new BasicDBObject("$gte",startTime).append("$lte", endTime));   事件条件 》=startTime       <=endTime

            match.put("NAME", 参数值);



        DBObject project = new BasicDBObject("$match",match); //$match相当于where
        //排序
        DBObject sortFields = new BasicDBObject("count", -1);
        DBObject sort = new BasicDBObject("$sort", sortFields );

        AggregationOutput output = myColl.aggregate(project,group, sort);

最后返回的是{ "serverUsed" : "/ip:27088" , "result" : [ { "_id" : 0 , "count" : 53100} , { "_id" :
1 , "count" : 56} , { "_id" : 4 , "count" : 2}] , "ok" : 1.0} 

处理数据可以将其转换为JSONArray类型"result" : [ { "_id" : 0 , "count" : 53100} , { "_id" :
1 , "count" : 56} , { "_id" : 4 , "count" : 2}]

这里给出的结果只是一个事例,按照状态分组得到的是状态为0的个数为53100,为1的是56个,。。。

里面就是一个个JSONObject对象


这就相当于sql 查询的:select  字段,count(字段) from   表名  where   条件    group by 字段;


参考数据: