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

  在上篇博文中,我通过封装的一个Java接口实现了MongoDBGroup功能,但是没有讲怎么根据日期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;
    }



相关内容

热门资讯

特朗普访华在即,随行商界大咖都... 美国总统特朗普将于5月13日至15日对中国进行国事访问。这是中美两国元首继去年10月釜山之后再次面对...
有线电视机顶盒安装问题求安装方... 有线电视安装说明: 一、将白色有线电视线一端连接有线电视终端盒另一端连接机顶盒后的射频输入口。 ...
60寸电视机尺寸画面长宽是多少...   60寸的液晶电视,60寸就是指电视屏幕对角线长度,因为长宽比有两种情况,经过寸转化为厘米计算之后...
长城电视机尺寸测量方法 长城电视机的尺寸测量方法与其他品牌的电视机测量方法基本相同。需要准备的工具有卷尺或直尺等测量工具,以...
伊朗学者:美伊能否达成协议,取... 伊朗5月10日就美国最新停战方案提交响应后,美国总统特朗普当天发文指出,伊方的响应“完全不可接受”。...
50英寸电视机尺寸是多少厘米 50 英寸电视机的尺寸通常是指屏幕对角线的长度,1 英寸约等于 2.54 厘米,因此 50 英寸电视...
演员张凌赫成上市公司第六大股东... 【大河财立方消息】 5月12日,节能风电在互动平台回应近期传言:关于近期网络流传的“公司股东张家玮先...
3D电视怎么样 最佳回答 你好这位网友,现在的很多电视机都是带3d功能的,只不过这种功能是需要通过特殊的VR眼镜才能...
三年行动计划公布!全面提升周口... 【大河财立方消息】 近日,河南省人民政府印发《河南周口国家农业高新技术产业示范区高质量发展三年行动计...
员工用企业账号向顾客发送“有偿... “5000陪我一晚上有时间吗?”近日,贵阳一沪上阿姨门店的企业成员账号给顾客发送“有偿陪睡”信息一事...