code: protected final <P> List<P> findSortedByQuery(String query, String sort, Integer skip, Integer limit, String projection, Class<P> as, Object... params) {
          return this.dataAccess.findSortedByQuery(query, sort, skip, limit, projection, as, params);
      }
docs: finds all elements matching the given query and sorts them accordingly. With this method it is possible to specify a projection to
  rename or filter fields in the result elements. Instead of returning typed objects it returns objects of type
  <code>as</code>
  
  @param query      the query to search for
  @param sort       the sort query to apply
  @param skip       the number of elements to skip
  @param limit      the number of elements to fetch
  @param projection the projection of fields to use
  @param as         the target to convert result elements to
  @param params     the parameters to replace # symbols
  @param <P>        the element type
  @return the list of elements found