Проблема с получением даты String в результатах с использованием оператора проекта агрегации данных spring mon go - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь получить общее количество записей в день, используя дату. Я могу получить результат подсчета, но получаю значение 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();
...