首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Java实现MongoDB的日期(Date)分组效能

2013-10-28 
Java实现MongoDB的日期(Date)分组功能  在上篇博文中,我通过封装的一个Java接口实现了MongoDB的Group功能,

Java实现MongoDB的日期(Date)分组功能

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


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


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


1234567891011121314151617181920212223242526272829303132333435363738public 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楼lfmilaoshi14分钟前
技术学习,不断积累吧

热点排行