Моя коллекция имеет структуру документа ниже:
{appName: 'test',
appEnv: 'Development'
appTech:'Java'
appVersion: '1_0',
startTime: '2019-04-12...',
deploymentTime: '1000',
appName: 'test',
appEnv: 'SQA',
appTech:'Java',
appVersion: '1_0',
startTime: '2019-04-12...',
deploymentTime: '1100'
appName: 'test22',
ppEnv: 'Development'
appTech:'Java'
appVersion: '1_2',
startTime: '2019-04-10...',
deploymentTime: '1200'
appName: 'test22',
appEnv: 'SQA'
appTech:'Java'
appVersion: '1_1',
startTime: '2019-04-10...',
deploymentTime: '1000'
appName: 'test22',
appEnv: 'SQA'
appTech:'Java'
appVersion: '1_0',
startTime: '2019-04-12...',
deploymentTime: '1000'
appName: 'test2',
appEnv: 'Development'
appTech:'.NET'
appVersion: '1_0',
startTime: '2019-04-10',
deploymentTime: '1000'
}
Я пытаюсь определить время развертывания каждого AppEnv, за последние 7 дней мой код выглядит следующим образом:
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
Date end = DateUtil.atEndOfDay(cal.getTime());
cal.add(Calendar.DAY_OF_MONTH, -7);
Date start = DateUtil.atStartOfDay(cal.getTime());
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(Criteria.where("startTime").gte(start).lte(end)),
Aggregation.project("deploymentTime").and("startTime")
.dateAsFormattedString("%Y-%m-%d").as("dateOfDeployment").and("appEnv").as("appEnv"),
Aggregation.group("appEnv","dateOfDeployment").sum("deploymentTime").as("totalTime"),
Aggregation.project("totalTime","appEnv","dateOfDeployment"),
Aggregation.sort(Sort.by(Direction.ASC, "totalTime"))
);
Я получаю результат, но для каждого приложения я получаю отдельный результат:
[
{
"appEnv": ["Development"],
"totalTime": [...],
"dateOfDeployment": "2019-04-12"
},
{
"appEnv": ["SQA"],
"totalTime": [...],
"dateOfDeployment": "2019-04-12"
},
{
"appEnv": ["SQA"],
"totalTime": [...],
"dateOfDeployment": "2019-04-10"
},
{
"appEnv": ["Development"],
"totalTime": [...],
"dateOfDeployment": "2019-04-10"
}]
То, что я хочу, для определенной даты, списка appEnv и totalTime, что-то вроде ниже:
[{
"appEnv": ["Development","SQA"],
"totalTime": [...,...],
"dateOfDeployment": "2019-04-12"
},
{
"appEnv": ["Development","SQA"],
"totalTime": [...,...],
"dateOfDeployment": "2019-04-10"
}]