加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

Java怎么实现MongoDB的日期分组功能

发布时间:2023-10-26 15:46:36 所属栏目:系统 来源:
导读:在实现Group功能时,通常还要附带一些条件,查询分组时只查询状态为已完成的或者未完成的,再或者查询某个日期时间段内符合条件的分组。这时候,如果在Reduce中设置符合条件的日期再计数,你会发现MongoDB完全忽略了
在实现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;
 
    }
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章