Date today= DateFormat.S2DD("2022-04-06 00:00:00");
Criteria criteria=Criteria.where("teamId").is("89999").
and("updateTime").gte(today);
GroupOperation groupSum = Aggregation.group("$machineId","$updateTime")
.first("machineName").as("machineName")
.first("machineId").as("machineId")
.first("updateTime").as("updateTime");
String formate = "%Y-%m-%d %H:%M:00";
AggregationExpression dateExpression = DateOperators.DateToString
.dateOf("updateTime")
.toString(formate)
.withTimezone(
DateOperators.Timezone.valueOf("+08")
);
String formate1 = "%Y-%m-%d %H:%M:%S";
AggregationExpression dateExpression1 = DateOperators.DateToString
.dateOf("updateTime")
.toString(formate1)
;
ProjectionOperation pro = Aggregation.project("machineId","machineName")
.and(dateExpression).as("minterTime")
.and("updateTime").substring(0,15).as("tenMinTime");
GroupOperation group = Aggregation.group("$tenMinTime")
.first("machineName").as("machineName")
.first("machineId").as("machineId")
.first("tenMinTime").as("tenMinTime");
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(criteria)
,groupSum
,pro
,group
,Aggregation.sort(Sort.Direction.ASC,"machineId")
).withOptions(aggregationOptions);
AggregationResults<Map> aggregate = mongoTemplate.aggregate(aggregation, "data_run_zero", Map.class);
List<Map> mappedResults = aggregate.getMappedResults();