The Spring Data MongoTemplate
code voor de gegeven aggregatie is als volgt.
Merk op dat ik een project heb toegevoegd podium voor de groep . Dit project Is benodigd; als de geneste velden ("details.student._id" en "details.studentStatus.statusCode") direct binnen de groep worden gebruikt stage there are errors "FieldPath field names may not contain '.'."
en kon niet worden opgelost (en dit gebeurt alleen wanneer u meer dan één veld in de groepering gebruikt).
Het resultaat is hetzelfde als dat van de aggregatie die u hebt opgegeven. Ik heb de nieuwste Spring- en MongoDB-stuurprogramma's gebruikt met 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);