MongoDB: how to group by date with mongo date aggregration using java driver

独自空忆成欢 提交于 2019-12-02 10:12:10

Java code for given query is as follows :

DBCollection coll = ...

Date startDate = ...
Date endDate = ...

DBObject dateQuery = new BasicDBObject();
dateQuery.put("$gt", startDate);
dateQuery.put("$lt", endDate);

DBObject match = new BasicDBObject();
match.put("dateCreated", dateQuery);

DBObject id = new BasicDBObject();
id.put("hour", new BasicDBObject("$hour", "$dateCreated"));
id.put("minute", new BasicDBObject("$minute", "$dateCreated"));
id.put("second", new BasicDBObject("$second", "$dateCreated"));

DBObject group = new BasicDBObject();
group.put("_id", id);
group.put("cnt", new BasicDBObject("$sum", 1));

AggregationOutput output = coll.aggregate(new BasicDBObject("$match", match), new BasicDBObject("$group", group));

if (output != null) {
    for (DBObject result : output.results()) {
        Integer count = (Integer) result.get("cnt");

        DBObject idObj = (DBObject) result.get("_id");
        Integer hour = (Integer) idObj.get("hour");
        Integer minute = (Integer) idObj.get("minute");
        Integer second = (Integer) idObj.get("second");
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!