public List<Document> queryMoviesByYear(String year) {
AggregationPipelineConfig config = new AggregationPipelineConfig(year);
return client
.getDatabase("sample_mflix")
.getCollection("movies")
.aggregate(config.getPipeline())
.into(new ArrayList<>());
}
class AggregationPipelineConfig {
private final List<Bson> pipeline;
public AggregationPipelineConfig(String year) {
pipeline = List.of(
Aggregates.match(Filters.eq("year", year)),
Aggregates.group("newField",
Accumulators.avg("test", "$year"),
Accumulators.sum("test2", "$year"),
Accumulators.bottom("field", Sorts.ascending("year"), "$year")
),
Aggregates.project(Projections.fields(Projections.include("year", "plot"))),
Aggregates.sort(Sorts.orderBy(Sorts.ascending("asd", "qwe")))
);
}
public List<Bson> getPipeline() {
return pipeline;
}
}