Проблема в том, что group("A", "state")
создает такой объект:
"_id":{"A":"...", "state":"..."}
Но он ожидает (Output.class
) поле A
в документе root.
Просто добавьте оператор $first
, чтобы добавить значение 1 st A
в документ root:
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria.where("userId").is(accountId)
.and("processingDay").gte(startMillis).lte(endMillis)),
//sort(Sort.by(Direction.ASC, "x1", "x2")) // explicitly
sort(Sort.by("x1", "x2")), //Default is ASC
group("A", "state")
.first("A").as("A")
.push(new BasicDBObject("x1", "$x1")
.append("x2", "$x2")
.append("A", "$A")
).as("XS"));