private Object getAggregationQuery(final Aggregate aggregation) {
        switch (aggregation.getAggregationOperation()) {
        case GEO_NEAR:
            return this.getGeometrySpecifiers(((GeoNearAggregate) aggregation).getGeometrySpecifier());
        case MATCH:
            return this.getMatchQuery(((MatchAggregate) aggregation).getQuery());
        case GROUP:
            return this.getGroupQuery(((GroupAggregate) aggregation).getGroup());
        case LIMIT:
            return ((LimitAggregate) aggregation).getLimit();
        case SKIP:
            return ((SkipAggregate) aggregation).getSkip();
        case UNWIND:
            return ((UnwindAggregate) aggregation).getProperty();
        case SORT:
            return this.getSortQuery(((SortAggregate) aggregation).getSortQuery());
        case PROJECT:
            return this.getProjectQuery(((ProjectAggregate) aggregation).getProjectQuery());
        }

        return null;
    }