स्प्रिंग डेटा MongoTemplate
दिए गए एकत्रीकरण के लिए कोड इस प्रकार है।
ध्यान दें कि मैंने एक प्रोजेक्ट जोड़ा है समूह . से पहले का चरण . यह प्रोजेक्ट आवश्यक है; अगर नेस्टेड फ़ील्ड ("details.student._id" और "details.studentStatus.statusCode") सीधे ग्रुप में उपयोग किए जाते हैं चरण में त्रुटियां हैं "FieldPath field names may not contain '.'."
और इसका समाधान नहीं किया जा सका (और यह केवल तब होता है जब आप समूह में एक से अधिक फ़ील्ड का उपयोग करते हैं)।
परिणाम आपके द्वारा प्रदान किए गए एकत्रीकरण के समान है। मैंने Java 8 के साथ नवीनतम स्प्रिंग और 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);