Spring Data Mongoに必要なAggregationOperationがない場合は常に($addFields
を再現するため) 、$redact
...)、回避策(迅速で汚い解決策と言う人もいます)は、com.mongodb.clientツールを直接使用して生の集計をSpringに渡すことです:
String collectionName = mongoTemplate.getCollectionName(Payment.class);
MongoCollection<Document> collection = mongoClient.getDatabase(mongoTemplate.getDb().getName()).getCollection(collectionName);
AggregateIterable<Document> ai = collection.aggregate(Arrays.asList(
Document.parse(/* { "group" : { ... } } */)))
MongoCollection.aggregate()は、集約パイプラインにList<Document>
として渡されます。 (実際、List<? extends Bson>
Document.parse()を使用して上記で提案した生の形式で、もちろんnew Document()
を使用することもできます 適切なOOPコードのように見せるため。生の集計が複雑な場合や、ネストされたドキュメントのネストされたコンポーネントの数が多すぎる場合は、生のフォームを使用する傾向がありますが、それは好みの問題です。
2020年の更新。
この