MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Streaming del risultato di un'operazione aggregata utilizzando spring-data-mongodb

Per coloro che stanno ancora cercando di trovare la risposta a questo:

Dalla versione spring-data-mongo 2.0.0.M4 in poi (AFAIK ) MongoTemplate ottenuto un aggregateStream metodo.

Quindi puoi fare quanto segue:

 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);