Spring - mongodb - aggregation - The 'cursor' option is required

From the docs.

MongoDB 3.4 deprecates the use of aggregate command without the cursor option, unless the pipeline includes the explain option. When returning aggregation results inline using the aggregate command, specify the cursor option using the default batch size cursor: {} or specify the batch size in the cursor option cursor: { batchSize: }.

You can pass batchSize with AggregationOptions in Spring Mongo 2.x version

Aggregation aggregation = newAggregation(unwind, group).withOptions(newAggregationOptions().cursorBatchSize(100).build());

With default batch size

Aggregation aggregation = newAggregation(unwind, group).withOptions(newAggregationOptions().cursor(new Document()).build());

'The 'cursor' option is required, except for aggregate with the explain argument'

This type of error raised in spring data when you are using incompatible versions of MongoDB and Spring-data-mongo.

Though you can get rawResults with explain, cursor arguments.

Aggregation aggregation = Aggregation.newAggregation(group).withOptions( new AggregationOptions(allowDiskUse, explain, cursor));

//try with .withOptions( new AggregationOptions(true,false,new Document()));

Passing by commented Arguments you will get result in rawResult but it will not be mapped in given outType.class.

To get mapped result you have to download right dependency of spring-data version according to your MongoDb version.

EDIT

I have used Spring version 5.0.3 and Spring-data-mongoDB version 2.0.3 It is working Fine.