use of org.springframework.data.mongodb.core.aggregation.MatchOperation in project tutorials by eugenp.
the class ZipsAggregationLiveTest method whenStatesHavePopGrtrThan10MillionAndSorted_thenSuccess.
@Test
public void whenStatesHavePopGrtrThan10MillionAndSorted_thenSuccess() {
GroupOperation groupByStateAndSumPop = group("state").sum("pop").as("statePop");
MatchOperation filterStates = match(new Criteria("statePop").gt(10000000));
SortOperation sortByPopDesc = sort(new Sort(Direction.DESC, "statePop"));
Aggregation aggregation = newAggregation(groupByStateAndSumPop, filterStates, sortByPopDesc);
AggregationResults<StatePopulation> result = mongoTemplate.aggregate(aggregation, "zips", StatePopulation.class);
/*
* Assert that all states have population
* greater than 10000000
*/
result.forEach(statePop -> {
assertTrue(statePop.getStatePop() > 10000000);
});
/*
* Assert that states fetched are in sorted by
* decreasing population
*/
List<StatePopulation> actualList = StreamSupport.stream(result.spliterator(), false).collect(Collectors.toList());
List<StatePopulation> expectedList = new ArrayList<>(actualList);
Collections.sort(expectedList, (sp1, sp2) -> sp2.getStatePop() - sp1.getStatePop());
assertEquals(expectedList, actualList);
}
use of org.springframework.data.mongodb.core.aggregation.MatchOperation in project commons-dao by reportportal.
the class AggregationUtilsTest method matchOperationFromFilter.
@Test
public void matchOperationFromFilter() {
String expected = "{ \"aggregate\" : \"__collection__\" , \"pipeline\" : [ { \"$match\" : { \"$and\" : [ { \"status\" : { \"$ne\" : \"IN_PROGRESS\"}}]}}]}";
Filter filter = Filter.builder().withTarget(Launch.class).withCondition(FilterConditionUtils.LAUNCH_NOT_IN_PROGRESS()).build();
MatchOperation matchOperation = AggregationUtils.matchOperationFromFilter(filter, mongoOperations, Launch.class);
Assert.assertEquals(expected, newAggregation(matchOperation).toString());
}
Aggregations