Note: MongoDB versiΓ³n 2.6 - 3.0 (compatible Java driver)
I added the org.springframework.data.mongodb.core.aggregation.AggregationOperation class to implement the toDBObject custom method:
public class GenericAggregationOperation implements AggregationOperation { private String operator; private DBObject query; public GenericAggregationOperation(String operator, String query) { this(operator, (DBObject) JSON.parse(query)); } public GenericAggregationOperation(String operator, DBObject query) { this.operator = operator; this.query = query; } @Override public DBObject toDBObject(AggregationOperationContext context) { return new BasicDBObject(operator, query); } }
In your case, it will be:
List<AggregationOperation> list = new ArrayList<AggregationOperation>(); lista.add(new GenericAggregationOperation("$group", "{ \"_id\": \"$title\", \"versions\": { \"$push\": { \"version\":\"$version\", \"author\":\"$author\", \"dateAdded\":\"$dateAdded\"}} }")); TypedAggregation<EpisodeIndexDto> agg = Aggregation.newAggregation( YourClassTitleVersion.class, list); mongoOperations.aggregate(agg, YourClassTitleVersion.class, YourClassTitleVersion.class).getMappedResults();
Hope this helps you.
source share