Example usage for org.springframework.data.mongodb.core.aggregation Aggregation match

List of usage examples for org.springframework.data.mongodb.core.aggregation Aggregation match

Introduction

In this page you can find the example usage for org.springframework.data.mongodb.core.aggregation Aggregation match.

Prototype

public static MatchOperation match(CriteriaDefinition criteria) 

Source Link

Document

Creates a new MatchOperation using the given CriteriaDefinition .

Usage

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();
}