春のデータMongoTemplate
指定された集計のコードは次のとおりです。
プロジェクトを追加したことに注意してください グループの前のステージ 。このプロジェクト 必要とされている;ネストされたフィールド("details.student._id"および"details.studentStatus.statusCode")がグループ内で直接使用されている場合 ステージにエラーがあります"FieldPath field names may not contain '.'."
解決できませんでした(これは、グループ化で複数のフィールドを使用した場合にのみ発生します)。
結果は、指定した集計の結果と同じです。 Java8で最新のSpringおよびMongoDBドライバーを使用しました。
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);