0
я борюсь с переводом этого запроса MongoDB в Spring Data MongoDB:Spring данные для агрегации запросов MongoDB
db.applicates.aggregate(
[
{
"$match": {
"claimantCategory": 1
}
},
{
$group : {
_id : { month: { $month: "$claimDate" }, day: { $dayOfMonth: "$claimDate" }, year: { $year: "$claimDate" } },
count: { $sum: 1 }
}
}
]
)
Я судимый это:
TypedAggregation<Applicate> aggregation = newAggregation(Applicate.class,
match(Criteria.where("claimantCategory").is(claimantCategory)),
project("claimDate")
.andExpression("dayOfMonth("+"\""+"claimDate"+"\""+")").as("day")
.andExpression("month(claimDate)").as("month")
.andExpression("year(claimDate)").as("year"),
group(fields().and("day").and("month").and("year"))
.count().as("count"));
AggregationResults<ClaimsAggregator> groupResults = mongoOperations.aggregate(aggregation, ClaimsAggregator.class);
Но он терпит неудачу с исключением: может «т преобразование из типа BSON строки для Дата
Мой Applicate.class:
public class Applicate {
@Id
private String id;
private int claimId;
@DateTimeFormat (iso = DateTimeFormat.ISO.DATE)
private Date claimDate;
private int codeOfForm;
private String claimStatus;
private String fio;
private int claimantCategory;
private int serviceCode;
private String subserviceName;
private String departmentName;
//getter,setters, constructor
}
ClaimsAggregator.class:
public class ClaimsAggregator {
private String claimDate;
private int count;
....
}
Заменить строки '.andExpression ("DayOfMonth (" + "\" "+" claimDate "+" \ "" + ")"). А ("день")' с этим '.andExpression ("DayOfMonth (claimDate)"). как ("день") '. – chridam
@chridam, спасибо за предложение. Просто проверил это, и теперь он возвращает поле null в поле даты. Что может быть причиной этого? – MoOFueL
Не слишком уверен, могут быть некоторые документы, у которых нет поля 'ClaimDate'? – chridam