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结果:
