Đối với những người vẫn đang cố gắng tìm câu trả lời cho điều này:
Từ phiên bản spring-data-mongo 2.0.0.M4 trở đi ( AFAIK ) MongoTemplate
có một aggregateStream
phương pháp.
Vì vậy, bạn có thể làm như sau:
AggregationOptions aggregationOptions = Aggregation.newAggregationOptions()
// this is very important: if you do not set the batch size, you'll get all the objects at once and you might run out of memory if the returning data set is too large
.cursorBatchSize(mongoCursorBatchSize)
.build();
data = mongoTemplate.aggregateStream(Aggregation.newAggregation(
Aggregation.group("person_id").count().as("count")).withOptions(aggregationOptions), collectionName, YourClazz.class);