Dữ liệu mùa xuân MongoTemplate
mã cho tập hợp đã cho như sau.
Lưu ý rằng tôi đã thêm một dự án giai đoạn trước nhóm . Dự án này bắt buộc; nếu các trường lồng nhau ("details.student._id" và "details.studentStatus.statusCode") được sử dụng trực tiếp trong nhóm có lỗi "FieldPath field names may not contain '.'."
và không thể được giải quyết (và điều này chỉ xảy ra khi bạn sử dụng nhiều trường trong nhóm).
Kết quả giống như kết quả của tổng hợp bạn đã cung cấp. Tôi đã sử dụng trình điều khiển Spring và MongoDB mới nhất với 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);