0
我有group by
查询如下所示。我如何使用Spring Mongo
组成相同的查询?任何人都可以请帮助在下面形成Jersey Query
?Spring Mongo Group通过GroupBy查询查询
db.Defects.aggregate([
{ "$group": {
"_id": {
"opendate": "$opendate",
"status": "$status"
},
"statusCount": { "$sum": 1 }
}},
{ "$group": {
"_id": "$_id.opendate",
"statuses": {
"$push": {
"status": "$_id.status",
"count": "$statusCount"`
},
},
}},
{ "$sort": { "count": -1 } }
])
我有我的球衣春季服务层 我需要获得日期分组第一和状态的那些状态特定的日期和数量分别。
@GET
@Path("/defecttrendchartdata")
@Produces(MediaType.APPLICATION_JSON)
public List<DefectTrendVO> getDefecttrendchart() throws JsonParseException, JsonMappingException, IOException{
DefectTrendVO deftrendvo =new DefectTrendVO();
List<DefectTrendVO> trendvolist = new ArrayList<DefectTrendVO>();
Aggregation agg = newAggregation(
group("opendate").count().as("count"),
project("count").and("opendate").previousOperation());
AggregationResults<DefectStatusVO> groupResults
= getMongoOperation().aggregate(agg, DefectVO.class, DefectStatusVO.class);
List<DefectStatusVO> result = groupResults.getMappedResults();
for(int i=0;i<result.size();i++){
List<DefectStatusVO> result1 = new ArrayList<DefectStatusVO>();
Aggregation agg1 = newAggregation(
match(Criteria.where("opendate").is(result.get(i).getOpendate())),
group("status").count().as("statuscount"),
project("statuscount").and("status").previousOperation());
System.out.println("Aggregation Result "+agg1);
AggregationResults<DefectStatusVO> groupResultsFinal
= getMongoOperation().aggregate(agg1, DefectVO.class, DefectStatusVO.class);
result1 = groupResultsFinal.getMappedResults();
System.out.println(result1.size()+"Result Size");
Date dateString = result.get(i).getOpendate();
for(int j=0;j<result1.size();j++){
deftrendvo =new DefectTrendVO();
if(result1.get(j).getStatus().equalsIgnoreCase("Closed")){
closedCnt= result1.get(j).getStatuscount();
deftrendvo.setClosedDefects(closedCnt);
System.out.println("closed defect"+deftrendvo.getClosedDefects());
}
else if(result1.get(j).getStatus().equalsIgnoreCase("Open")){
openCnt=result1.get(j).getStatuscount();
deftrendvo.setOpenDefects(openCnt);
}
else if(result1.get(j).getStatus().equalsIgnoreCase("Fixed")){
newCnt=result1.get(j).getStatuscount();
deftrendvo.setFixedDefects(newCnt);
}
else if(result1.get(j).getStatus().equalsIgnoreCase("Rejected")){
rejectedCnt=result1.get(j).getStatuscount();
deftrendvo.setRejectedDefects(rejectedCnt);
}
else if(result1.get(j).getStatus().equalsIgnoreCase("New")){
rejectedCnt=result1.get(j).getStatuscount();
deftrendvo.setNewDefects(rejectedCnt);
}
Date date = new Date();
date=dateString;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String format = formatter.format(date);
deftrendvo.setDate(format);
trendvolist.add(deftrendvo);
}
}
return trendvolist;
}
这给出如下结果。但我需要的日期不应该重复
[{"newDefects":0,"closedDefects":7,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-01"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":7,"date":"2016-01-01"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":9,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-01"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":4,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-05"},{"newDefects":0,"closedDefects":6,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-05"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":10,"date":"2016-01-05"},{"newDefects":2,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-12"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":10,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-12"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":5,"date":"2016-01-12"},{"newDefects":0,"closedDefects":9,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-12"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":3,"date":"2016-01-15"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":6,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-15"},{"newDefects":0,"closedDefects":4,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-15"},{"newDefects":6,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-15"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":3,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-21"},{"newDefects":7,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-21"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":11,"date":"2016-01-21"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":3,"date":"2016-01-26"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":6,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-26"},{"newDefects":5,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-26"},{"newDefects":0,"closedDefects":3,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-26"},{"newDefects":0,"closedDefects":6,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-23"},{"newDefects":3,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-23"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":3,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-23"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":10,"date":"2016-01-23"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":5,"date":"2016-01-31"},{"newDefects":0,"closedDefects":0,"fixedDefects":0,"openDefects":4,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-31"},{"newDefects":0,"closedDefects":4,"fixedDefects":0,"openDefects":0,"reopenDefects":0,"rejectedDefects":0,"date":"2016-01-31"}]