public List countLogByUserIdAndDate(Long userId) {
Criteria criteria = Criteria.where("userId").is(userId);
Aggregation agg = Aggregation.newAggregation(
Aggregation.match(criteria),
Aggregation.project("createAt").and(DateOperators.DateToString.dateOf("createAt").toString("%Y-%m-%d")).as("times"),
Aggregation.group("times").count().as("count"),
Aggregation.project("times", "count").and("date").previousOperation(),
Aggregation.sort(Sort.Direction.DESC, "date"));
AggregationResults<Map> queryAccess = mongoTemplate.aggregate(agg, "VehicleOperate", Map.class);
org.bson.Document rawResults = queryAccess.getRawResults();
List<Map<String, Object>> results = (List<Map<String, Object>>) rawResults.get("results");
return results;
}
参考以下2篇文章
java代码根据MongoDB中时间字段分组统计