Java中怎么实现一个Group功能
admin
2023-04-13 20:21:22
0

接口方法如下:

/**
     * keyColumn : new String[]{"xxxName","xxxType"} 
     * condition : 查询条件 ,可为空
     * initial : 分组统计初始变量,为空时自动为每列提供初始变量
     * reduce : 记录处理function
     * finalize : finalize函数,可为空 
     */     public BasicDBList group(String[] keyColumn, DBObject condition,             DBObject initial, String reduce, String finalize) {         DBCollection coll = getCollection();         DBObject key = new BasicDBObject();         for (int i = 0; i < keyColumn.length; i++) {             key.put(keyColumn[i], true);         }         condition = (condition == null) ? new BasicDBObject() : condition;         if (StringUtils.isEmpty(finalize)) {             finalize = null;         }         if (initial == null) {      //定义一些初始变量             initial = new BasicDBObject();             for (int i = 0; i < keyColumn.length; i++) {                 DBObject index = new BasicDBObject();                 index.put("count", 0);                 index.put("sum", 0);                 index.put("max", 0);                 index.put("min", 0);                 index.put("avg", 0);                 index.put("self", "");                 initial.put(keyColumn[i], index);             }         }         BasicDBList resultList = (BasicDBList) coll.group(key, condition,                 initial, reduce, finalize);         return resultList;     }

实现案例:

//任务统计
    @Action(value = "getTaskStatistic", results = { @Result(name = "success", type = "json", params = {
            "includeProperties", "jsonResult" }) })
    public String getTaskStatistic() {
        DBObject initial = new BasicDBObject();
        DBObject index = new BasicDBObject();
        index.put("count", 0);
        index.put("taskStatus", "");
        initial.put("taskStatus", index);
                     
        String reduce = "function (doc, out) { "
                    + " out.taskStatus.count = out.taskStatus.count+=1; "
                    + " out.taskStatus.inspectStatus = doc.taskStatus;"
                + "}";
        BasicDBList group = (BasicDBList) taskStatusService.group(new String[] { "taskStatus"}, null, initial, reduce, null);
                     
        this.jsonResult = group.toString();
        return SUCCESS;
    }

返回数据:

[ { "taskStatus" : { "count" : 4.0 , "taskStatus" : "Finished"}} , { "taskStatus" : { "count" : 3.0 , "taskStatus" : "Received"}} , { "taskStatus" : { "count" : 2.0 , "taskStatus" : "UnReceive"}}]

相关内容

热门资讯

我来教教您“讯奇麻将有挂吗?”... 我来教教您“讯奇麻将有挂吗?”(必胜开挂神器)您好,讯奇麻将这个游戏其实有挂的,确实是有挂的,需要了...
【第一资讯】“新卡农炸/金/花... 您好:新卡农炸/金/花这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在...
终于了解“掌酷天天开心可以开挂... 您好:掌酷天天开心这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
最新引进“九九山城麻将辅助器?... 您好:九九山城麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
终于明白“新超凡牛牛可以开挂吗... 终于明白“新超凡牛牛可以开挂吗?”(太坑了原来有挂)您好,新超凡牛牛这个游戏其实有挂的,确实是有挂的...
今日重大通报“衡阳丫丫竞技开挂... 您好:衡阳丫丫竞技这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
今日重大通报“新全游是不是有挂... 网上科普关于“新全游有没有挂”话题很是火热,小编也是针对新全游作*弊开挂的方法以及开挂对应的知识点,...
今日重磅消息“达人十三水可以开... 网上科普关于“达人十三水有没有挂”话题很是火热,小编也是针对达人十三水作*弊开挂的方法以及开挂对应的...
玩家最新攻略“玄龙炸/金/花究... 家人们!今天小编来为大家解答玄龙炸/金/花透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪...
【第一消息】“新九天牛牛开挂器... 【第一消息】“新九天牛牛开挂器?”(太坑了果然有挂)您好,新九天牛牛这个游戏其实有挂的,确实是有挂的...