设为首页 加入收藏

TOP

MongoDB聚合Group(一)(二)
2015-11-21 01:53:21 来源: 作者: 【 】 浏览:1
Tags:MongoDB 聚合 Group
o.com/kf/yidong/wp/" target="_blank" class="keylink">WPC9oMT4KICAgICAgIFNwcmluZwogRGF0YSBNb25nb0RCIMzhuanBy0dyb3Vw09C8uLj2vdO/2gogICAgICAgPGltZyBzcmM9"http://www.cppentry.com/upload_files/article/57/1_enlkg__.png" alt="\"> GroupCommand groupCommand=new GroupCommand(inputCollection, keys, condition, initial, reduce, finalize);

1)我们要对日期和产品编码进行分组,并计算相同的产品的数量

       @Override
	public void getGroupCount(String collectionName) {
		
		BasicDBObject key = new BasicDBObject(); 
		key.put("date", 1);
		key.put("item.pnumber", 1);
		//条件
		BasicDBObject cond = new BasicDBObject();  
		//初始化
		BasicDBObject initial = new BasicDBObject();  
		initial.append("total", 0);  
		//reduce
		String reduce = "function Reduce(doc, out) { " +  
		        "  out.total+=doc.item.quantity;" +  
		        "}";  
		
		SimpleDateFormat format=new SimpleDateFormat("yyyy-mm-dd");
		BasicDBList groupList=(BasicDBList) mongoTemplate.getCollection(collectionName).group(key, cond, initial, reduce);
		if(groupList!=null&&groupList.size()>0){
			System.out.println("date  item.pnumber  total");
			for(int i=0;i结果:

\

2)实现一天卖出了多少个产品,金额是多少,平均价格是多少

        @Override
	public void getGroupAvg(String collectionName) {
		
		BasicDBObject key = new BasicDBObject(); 
		key.put("date", 1);
		
		//条件
		BasicDBObject cond = new BasicDBObject();  
		//初始化
		BasicDBObject initial = new BasicDBObject();  
		initial.append("total", 0); 
		initial.append("money", 0.0);
		
		//reduce
		String reduce = "function Reduce(doc, out) { " +  
		        "  out.total+=doc.item.quantity;" + 
		        "   out.money+=doc.item.quantity*doc.item.price;" +
		        "}"; 
		
		String finalize="function Finalize (out) { " +  
	        "  out.avg=out.money/out.total;" + 
	        "  	return out;" +
	        "}";		
		SimpleDateFormat format=new SimpleDateFormat("yyyy-mm-dd");
		BasicDBList groupList=(BasicDBList) mongoTemplate.getCollection(collectionName).group(key, cond, initial, reduce, finalize);
		if(groupList!=null&&groupList.size()>0){
			System.out.println("date  total  money  avg");
			for(int i=0;i结果:

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ACCESS数据库保留字千万慎用 下一篇DBlink的迁移(dblink中的密码未..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: