List of usage examples for org.springframework.data.mongodb.core.aggregation Aggregation sort
public static SortOperation sort(Direction direction, String... fields)
From source file:org.ingini.mongodb.spring.example.aggregation.TestAggregationFramework.java
/** * Example taken from https://github.com/mongodb/mongo-ruby-driver/wiki/Aggregation-Framework-Examples * Command line import: mongoimport --drop --db aggregation_test_db --collection name_days name_days.json * <p>/*from w ww .java2 s.com*/ * db.name_days.aggregate({$project : {names : 1, _id : 0}}, * {$unwind : '$names'}, * {$group : {_id: '$names', counter: {$sum: 1}}}, * {$sort : {counter: -1}}, * {$limit : 10}); * </p> */ @Test public void shouldFindThe10MostCommonNames() { //GIVEN CollectionManager.cleanAndFill(mongoTemplate.getDb(), "name_days.json", NameData.COLLECTION_NAME); int limit = 10; //WHEN AggregationResults<AggregatedNameData> aggregationResult = mongoTemplate.aggregate( Aggregation.newAggregation(NameData.class, Aggregation.project("names").andExclude("_id"), Aggregation.unwind("names"), Aggregation.group("names").count().as("counter"), Aggregation.sort(Sort.Direction.DESC, "counter"), Aggregation.limit(limit)), AggregatedNameData.class); //THEN assertThat(aggregationResult.getMappedResults()).hasSize(10); assertThat(aggregationResult.getMappedResults().get(0)).isEqualTo(new AggregatedNameData("Jana", 21)); }
From source file:com.handu.open.dubbo.monitor.DubboMonitorService.java
/** * ?//w w w. ja v a 2s . c o m * * @param dubboInvoke */ public List<DubboInvoke> countDubboInvoke(DubboInvoke dubboInvoke) { if (StringUtils.isEmpty(dubboInvoke.getService())) { logger.error("???"); throw new RuntimeException("???"); } TypedAggregation<DubboInvoke> aggregation = Aggregation.newAggregation(DubboInvoke.class, Aggregation.match(Criteria.where("service").is(dubboInvoke.getService()).and("method") .is(dubboInvoke.getMethod()).and("type").is(dubboInvoke.getType()).and("invokeDate") .gte(dubboInvoke.getInvokeDateFrom()).lte(dubboInvoke.getInvokeDateTo())), Aggregation .project("service", "method", "type", "success", "failure", "elapsed", "maxElapsed", "maxConcurrent", "invokeTime") .andExpression("(invokeTime / " + dubboInvoke.getTimeParticle() + ") * " + dubboInvoke.getTimeParticle()) .as("invokeTime"), Aggregation.group("service", "method", "type", "invokeTime").sum("success").as("success") .sum("failure").as("failure").sum("elapsed").as("elapsed").max("maxElapsed") .as("maxElapsed").min("maxConcurrent").as("maxConcurrent"), Aggregation.sort(Sort.Direction.ASC, "invokeTime")); AggregationResults<DubboInvoke> result = mongoTemplate.aggregate(aggregation, "dubboInvoke", DubboInvoke.class); return result.getMappedResults(); }