Spring Data MongoTemplate
kod dla danej agregacji jest następujący.
Zauważ, że dodałem projekt etap przed grupą . Ten projekt jest wymagane; jeśli zagnieżdżone pola („details.student._id” i „details.studentStatus.statusCode”) są używane bezpośrednio w grupie etap występują błędy "FieldPath field names may not contain '.'."
i nie mógł zostać rozwiązany (a dzieje się tak tylko wtedy, gdy używasz więcej niż jednego pola w grupowaniu).
Wynik jest taki sam jak w podanej agregacji. Użyłem najnowszych sterowników Spring i MongoDB z Javą 8.
MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "spr_test");
Aggregation agg = newAggregation(
unwind("details"),
project("_id")
.and("details.student._id").as("sid")
.and("details.studentStatus.statusCode").as("statuscode"),
group("sid", "statuscode")
.count().as("total")
);
AggregationResults<Document> aggResults = mongoOps.aggregate(agg, "students", Document.class);
aggResults.forEach(System.out::println);