/** * Creates a descending natural sort on a field * * @return the Sort instance */ public static Sort naturalDescending() { return new Sort(NATURAL, -1); }
/** * @return the sort direction * @deprecated Use {@link org.mongodb.morphia.query.Sort#getOrder()} instead. */ @Deprecated public int getDirection() { return super.getOrder(); } }
/** * Creates a descending list of metrics for a specified period of time. * * @param id Trace field wanted * @param size max number of elements to return * @param period period of time wanted * @return List of metrics */ public List<Metric> findByTop(String id, int size, Periods period) { final Datastore datastore = this.datastore(); Query<LogTrace> query = prepareRange(datastore.createQuery(LogTrace.class), period); query.field(id).notEqual(null); final AggregationPipeline pipeline = datastore.createAggregation(LogTrace.class) .match(query) .group(id, Group.grouping("metric", Group.last(id)), Group.grouping("value", Accumulator.accumulator("$sum", 1))) .sort(Sort.descending("value")) .limit(size); final Iterator<Metric> aggregate = pipeline.aggregate(Metric.class); List<Metric> list = new ArrayList<>(); aggregate.forEachRemaining(list::add); return list; }
@Override public Query<T> order(final Sort... sorts) { BasicDBObject sortList = new BasicDBObject(); for (Sort sort : sorts) { String s = sort.getField(); if (validateName) { final StringBuilder sb = new StringBuilder(s); validateQuery(clazz, ds.getMapper(), sb, FilterOperator.IN, "", true, false); s = sb.toString(); } sortList.put(s, sort.getOrder()); } getOptions().sort(sortList); return this; }
/** * Creates an ascending sort on a field * * @param field the field * @return the Sort instance */ public static Sort ascending(final String field) { return new Sort(field, 1); }
/** * Creates a descending sort on a field * * @param field the field * @return the Sort instance */ public static Sort descending(final String field) { return new Sort(field, -1); }
/** * Creates an ascending sort on a field * * @return the Sort instance */ public static Sort naturalAscending() { return new Sort(NATURAL, 1); }