monodb 聚合框架 Aggregation

来源:互联网 发布:笔记本thinkpad和mac 编辑:程序博客网 时间:2024/04/29 19:45

前提:本人采用mongodb和spring整合的project


与SQL对照的操作
import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.stereotype.Service;import com.mongodb.AggregationOutput;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBObject;@Servicepublic class NetflowDao  {
          @Autowired  MongoTemplate mongoTemplate;
                                     public static void main(String[] args) {        // 假设表中列有 _id  name age  score          Map matchMap = new HashMap();         //where 条件 年龄大于12          matchMap.put("age", new BasicDBObject("$gt", 12));                  Map groupMap = new HashMap();         groupMap.put("name","$name");         groupMap.put("age","$age");                  BasicDBObject   Basicgroup= new BasicDBObject();                  //分组条件         Basicgroup.put("_id", groupMap);         //计算总分         Basicgroup.put("totalscore", new BasicDBObject("$sum", "$score"));                  BasicDBObject group=new BasicDBObject("$group", Basicgroup);                              //分页条件 每次查询返回条数BasicDBObject groupOptlimit = new BasicDBObject();groupOptlimit.put("$limit", 10);//从多少条开始查询BasicDBObject groupOptskip = new BasicDBObject();groupOptskip.put("$skip", 0);        BasicDBObject orderbyOpt = new BasicDBObject();        //设置总分排序 正序1 倒序-1        orderbyOpt.append("$sort", new BasicDBObject("totalscore",1));                  AggregationOutput aggrResult= mongoTemplate.getCollection("shopnetflowday").aggregate( matchMap,group,orderbyOpt,groupOptskip,groupOptlimit); Iterator<DBObject> iter = aggrResult.results().iterator();while (iter.hasNext()) {System.out.println(iter.next());}}


}


0 0