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;
    }



相关内容

热门资讯

【今日要闻】“普通牌九透视辅助... 您好:普通牌九透视这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
我来教教您“卡农炸/金/花有挂... 我来教教您“卡农炸/金/花有挂吗?”(外卦神器下载)您好,卡农炸/金/花这个游戏其实有挂的,确实是有...
特朗普称美军在委内瑞拉行动中摧... 当地时间12月29日,央视记者获悉,美国总统特朗普在采访中表示,美军在委内瑞拉行动中摧毁了一座“大型...
今日重大发现“小甘麻将到底是不... 您好:小甘麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
终于了解“哈灵麻将有挂吗?”(... 您好:哈灵麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
聚瑞电气申请高精度电磁柱塞定量... 国家知识产权局信息显示,东莞市聚瑞电气技术有限公司申请一项名为“一种能在出口高真空下使用的高精度电磁...
哈工大教授团队联合校友企业共创... 近日,哈工大机电工程学院付宜利教授、倪风雷教授团队联合校友企业博实股份在人形机器人的双形态人形机器人...
【第一消息】“天天爱掼蛋怎么装... 您好:天天爱掼蛋这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
今日重大发现“新金龙炸/金/花... 有 亲,根据资深记者爆料新金龙炸/金/花是可以开挂的,确实有挂(咨询软件...
今日重大消息“小甘麻将有没有挂... 您好:小甘麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...