Vårdata MongoTemplate
koden för den givna aggregeringen är följande.
Observera att jag har lagt till ett projekt steg före gruppen . Detta projekt krävs; om de kapslade fälten ("details.student._id" och "details.studentStatus.statusCode") används direkt inom gruppen steg det finns fel "FieldPath field names may not contain '.'."
och kunde inte lösas (och detta händer bara när du använder mer än ett fält i grupperingen).
Resultatet är detsamma som för den aggregering du har angett. Jag har använt de senaste drivrutinerna för Spring och MongoDB med Java 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);