2017-08-10 30 views
0

我正在使用mongo吗啡。如何在以下函数中添加group by子句。如何在此查询中使用分组

public ArrayList<DeliveryServiceVisitorUserTraceEntity> listExpectedDeliveries(String associationId) { 

     // HashMap<String, String> filterExpressions = new HashMap<String, String>(); 

     Query<DeliveryServiceVisitorUserTraceEntity> query = DBManager.getInstance().createQuery(
       DeliveryServiceVisitorUserTraceEntity.class); 

     List<Integer> values = new ArrayList<Integer>(); 
     values.add(1); 
     values.add(2); 

     query.and(query.criteria("associationId").equal(associationId), 
       query.criteria("deliveryServicestatus").in(values), 
       query.criteria("allowTimeIn").greaterThan(getStartOfDay(new Date()) + ""), query 
         .criteria("allowTimeIn").lessThan(getEndOfDay(new Date()) + "") 
         ); 
     List<DeliveryServiceVisitorUserTraceEntity> residents = query.asList(); 
     return new ArrayList<DeliveryServiceVisitorUserTraceEntity>(residents); 
    } 

回答

0

您必须使用聚合框架来实现分组。 我使用吗啡1.1.0和聚集,我会做这样的事情

AggregationPipeline pipeline = DAO.getDatastore() 
 
     .createAggregation(DeliveryServiceVisitorUserTraceEntity.class) 
 
     .match(query) //Your createQuery object 
 
     .group("groupByField"); //group by field 
 
     
 
Iterator<GroupObj> iterator = pipeline.aggregate(GroupObj.class);

这里GroupObj是你需要创造条件,匹配聚集结果的架构的新类