Spring Data MongoTemplate
kode for den givne aggregering er som følger.
Bemærk, at jeg har tilføjet et projekt fase før gruppen . Dette projekt er påkrævet; hvis de indlejrede felter ("details.student._id" og "details.studentStatus.statusCode") bruges direkte i gruppen trin er der fejl "FieldPath field names may not contain '.'."
og kunne ikke løses (og dette sker kun, når du bruger mere end ét felt i grupperingen).
Resultatet er det samme som for den sammenlægning, du har angivet. Jeg har brugt de seneste Spring- og MongoDB-drivere 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);