我的收藏集具有以下文档结构:
{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的DeploymentTime,最近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我得到一个单独的结果:
[
{
"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"
}]