MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Streaming do resultado de uma operação agregada usando spring-data-mongodb


Para aqueles que ainda estão tentando encontrar a resposta para isso:

A partir da versão 2.0.0.M4 do spring-data-mongo (AFAIK ) MongoTemplate tem um aggregateStream método.

Então você pode fazer o seguinte:
 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);