Я пытаюсь получить общее количество записей в день, используя дату. Я могу получить результат подсчета, но получаю значение null для даты в json. Ниже приведен пример даты, установленной для итерации.
Sample Data Set:
[
{
"_id" : ObjectId("5cb726a47a7148376094d398"),
"_class" : "com.forum.api.domain.PrivateDiscussionsInfo",
"discussion_id" : "5cb726a47a7148376094d398",
"discussion_name" : "Report - June Status",
"created_date" : ISODate("2020-04-26T14:59:19.254Z")
},
{
"_id" : ObjectId("5cb726a33a7148376294d398"),
"_class" : "com.forum.api.domain.PrivateDiscussionsInfo",
"discussion_id" : "5cb726a47a7148376094d398",
"discussion_name" : "Report - July Status",
"created_date" : ISODate("2020-04-27T14:59:19.254Z")
},
{
"_id" : ObjectId("5cb726a47a2248371094d398"),
"_class" : "com.forum.api.domain.PrivateDiscussionsInfo",
"discussion_id" : "5cb726a47a7148376094d399",
"discussion_name" : "Report - August Status",
"created_date" : ISODate("2020-04-27T14:59:19.254Z"),
}
]
Мне нужны дата и общее количество записей за день в классе ответа результата.
Results.java:
public class Results{
private String date;
private int count;
}
Expected Output:
[
{
"date" : "2020-04-27",
"count" : 2
},
{
"date" : "2020-04-26",
"count" : 1
}
]
Java Code:
Date startTime = new DateTime().minusDays(25).toDate();
Date endTime = new DateTime().toDate();
List<String> ids = new ArrayList<>();
ids.add("5cb726a47a7148376094d398");
ids.add("5cb726a47a7148376094d399");
Criteria criteria = new Criteria().andOperator(Criteria.where("discussion_id").in(ids),Criteria.where("created_date").gt(startTime).lt(endTime));
Aggregation agg = newAggregation(
match(criteria),project("created_date").andExpression("dayOfMonth(created_date)")
.as("formattedDate"),group("formattedDate").count().as("count"),project("formattedDate").andExpression("dayOfMonth(created_date)")
.as("formattedDate"));
AggregationResults<Results> results = mongoOps.aggregate(agg, "Results",
Results.class);
return results.getMappedResults();