List of usage examples for org.springframework.data.mongodb.core.aggregation Aggregation match
public static MatchOperation match(CriteriaDefinition criteria)
From source file:org.ingini.mongodb.spring.example.aggregation.TestAggregationFramework.java
/** * Example taken from http://docs.mongodb.org/manual/tutorial/aggregation-examples/#aggregations-using-the-zip-code-data-set * Command line import: mongoimport --drop -d aggregation_test_db -c zipcodes zips.json * <p>/* w w w . jav a 2s. co m*/ * db.zipcodes.aggregate( { $group : { _id : "$state", totalPop : { $sum : "$pop" } } }, * { $match : {totalPop : { $gt : 10*1000*1000 } } } ) * </p> */ @Test public void shouldFindAllStatesWithPopulationOver10Millions() { //GIVEN CollectionManager.cleanAndFill(mongoTemplate.getDb(), "zips.json", ZipData.COLLECTION_NAME); int lowerLimit = 10 * 1000 * 1000; //WHEN AggregationResults<AggregatedStateData> aggregationResult = mongoTemplate.aggregate( Aggregation.newAggregation(StateData.class, Aggregation.group("state").sum("population").as("pop"), Aggregation.match(Criteria.where("pop").gt(lowerLimit))), AggregatedStateData.class); //THEN assertThat(aggregationResult.getMappedResults()).hasSize(7); }
From source file:io.smalldata.ohmageomh.data.repository.MongoDataPointRepositoryImpl.java
@Override public List<LastDataPointDate> findLastDataPointDate(List<String> userIds, DataPointSearchCriteria searchCriteria, String dateField) { if (dateField == null) { dateField = "header.creation_date_time"; }// www. j a v a 2 s .c o m Aggregation agg = Aggregation.newAggregation( Aggregation.match(Criteria.where("header.user_id").in(userIds).and("header.schema_id.namespace") .is(searchCriteria.getSchemaNamespace()).and("header.schema_id.name") .is(searchCriteria.getSchemaName()).and("header.schema_id.version.major") .is(searchCriteria.getSchemaVersion().getMajor()).and("header.schema_id.version.minor") .is(searchCriteria.getSchemaVersion().getMinor())), Aggregation.group("header.user_id").max(dateField).as("date").last("header.user_id").as("user_id")); //Convert the aggregation result into a List AggregationResults<LastDataPointDate> groupResults = mongoOperations.aggregate(agg, "dataPoint", LastDataPointDate.class); List<LastDataPointDate> result = groupResults.getMappedResults(); return result; }
From source file:com.handu.open.dubbo.monitor.DubboMonitorService.java
/** * ?//from w w w . j a v a 2 s . com * * @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(); }
From source file:com.handu.open.dubbo.monitor.DubboMonitorService.java
/** * ??//from ww w . ja v a 2 s.co m * * @param dubboInvoke * @return */ public List<DubboInvoke> countDubboInvokeInfo(DubboInvoke dubboInvoke) { if (StringUtils.isEmpty(dubboInvoke.getService()) || StringUtils.isEmpty(dubboInvoke.getMethod()) || StringUtils.isEmpty(dubboInvoke.getType())) { 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.group("service", "method").sum("success").as("success").sum("failure").as("failure") .sum("elapsed").as("elapsed").max("maxElapsed").as("maxElapsed").min("maxConcurrent") .as("maxConcurrent")); AggregationResults<DubboInvoke> result = mongoTemplate.aggregate(aggregation, "dubboInvoke", DubboInvoke.class); return result.getMappedResults(); }