vmr
vmr

Reputation: 1935

Convert Mongo shell script to SpringData/Java

Yet to come to terms with using Spring Data/Java API for MongoDB, how do I convert the following mongo shell query to Spring Data/Java query, any help would be great...

> db.collection.aggregate(
{$unwind : "$data.mi"},
{$sort : {"data.mi.failures" : -1}},
{$group : {_id : "$data.mi.name", 
           sum_total_of_failures : {$sum : "$data.mi.failures"}, 
           uid : {$first : "$uid"}}}
)

Upvotes: 2

Views: 819

Answers (1)

Alan Spencer
Alan Spencer

Reputation: 566

In spring it would look like this

    String collection="collection";

    Aggregation agg = newAggregation(
            unwind("data.mi")
            ,sort(DESC,"data.mi.failures")
            ,group("data.mi.name")
            .sum("data.mi.failures").as("sum_total_of_failures")
            .first("uid").as("uid")
    );
    AggregationResults<Type> aggregate = mongoOperations.aggregate(agg, collection, objectClass);

With these imports assumed

import com.mongodb.BasicDBObject;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import static org.springframework.data.domain.Sort.Direction.*;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;

Upvotes: 2

Related Questions