Java实现MongoDB的日期(Date)分组功能
admin
2023-04-13 20:01:27
0次

  在上篇博文中,我通过封装的一个Java接口实现了MongoDB的Group功能,但是没有讲怎么根据日期Date查询,这里补充一下,如何完善MongoDB的日期Group功能。


  在实现Group功能时,通常还要附带一些条件,查询分组时只查询状态为已完成的或者未完成的,再或者查询某个日期时间段内符合条件的分组。这时候,如果在Reduce中设置符合条件的日期再计数,你会发现MongoDB完全忽略了日期。为什么?因为语法不对。


  在MongoDB中查询特定条件的分组时,应该把这些条件放到Condition中,具体怎么做,还是看下面的代码吧。


public String getCTOStatistic() throws Exception {
        String ctoTaskType = getParameterValue("ctoTaskType").toString();
        String startDate = getParameterValue("startDate").toString();
        String endDate = getParameterValue("endDate").toString();
        DBObject initial = new BasicDBObject();
        DBObject index = new BasicDBObject();
        BasicDBObject cond = new BasicDBObject();
        BasicDBObject dateCondition = new BasicDBObject();
          
        index.put("count", 0);
        index.put("ctoPerson", "");
        initial.put("ctoPerson", index);
          
        cond.put("ctoStatus", "Finished");
        if(StringUtils.isNotEmpty(ctoTaskType)){
            cond.put("taskId", ctoTaskType);
        }
        if(StringUtils.isNotEmpty(startDate)){
            dateCondition.append("$gte", DateUtil.toDate(startDate));
        }
        if(StringUtils.isNotEmpty(endDate)){
            dateCondition.append("$lt", DateUtil.toDate(endDate));
        }
        cond.put("jobCreateTime",dateCondition);
          
          
        String reduce = "function (doc, out) { "
            + " out.ctoPerson.count = out.ctoPerson.count+=1; "
            + " out.ctoPerson.ctoPerson = doc.ctoPerson;"
        + "}";
          
          
        BasicDBList group = (BasicDBList) ctoJobService.group(
                new String[] { "ctoPerson"}, cond, initial, reduce, null);
          
        this.jsonResult = group.toString();
        return SUCCESS;
    }



相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...