在mongodb查询中按日期分组而不考虑时间

时间:2015-03-12 16:58:41

标签: mongodb mongodb-query mongo-java

我有以下代码:

DBObject groupFields = new BasicDBObject("_id", "$Date");
    groupFields.put("count", new BasicDBObject("$sum", 1));
    DBObject groupBy = new BasicDBObject("$group", groupFields);
    stages.add(groupBy);
    DBObject project = new BasicDBObject("_id", 0);
    project.put("count", 1);
    project.put("Date", "$_id");
    stages.add(new BasicDBObject("$project", project));

    DBObject sort = new BasicDBObject("$sort", new BasicDBObject("Date", 1));
    stages.add(sort);

按日期分组并显示工作正常的计数,但问题是我的日期格式如下:

“日期”:ISODate(“2014-11-19T04:11:22.000Z”)

并且您可以看到它也有时间,但我想按日期分组而不考虑时间,所以我想考虑这样的日期:
  2014-11-19T04:00:00.000Z但是我不知道该怎么做...有没有像mysql中的日期这样的mongodb函数呢?

有人可以帮忙吗?

更新:

我认为这可能会有所帮助,但仍然不知道该怎么做: link that might help

1 个答案:

答案 0 :(得分:3)

解决方案取决于您是否需要将结果“Date”作为ISODate()类型,或者是否可以将其作为字符串返回。

如果你对字符串没问题,新版本的MongoDB(3.0)引入了$dateToString投影操作符。

如果必须是ISODate(),您可以使用我在此博客文章中详细描述的技巧:http://www.kamsky.org/stupid-tricks-with-mongodb/stupid-date-tricks-with-aggregation-framework

相关问题