插入数据:

 


db.test.insert({name:'zs', count:5})
db.test.insert({name:'zs', count:6})
db.test.insert({name:'zs', count:7})
db.test.insert({name:'ls', count:7})
db.test.insert({name:'ls', count:2})

  

 

按照name进行分组:

 


db.runCommand({"group" : {
  "ns":"test",
  "key": {"name":true},
  "initial":{"count":0},
  "$reduce":function(doc, prev){
     prev.count+=doc.count
  }
}})


 

返回结果:

 

{
        "retval" : [
                {
                        "name" : "zs",
                        "count" : 23
                },
                {
                        "name" : "ls",
                        "count" : 14
                }
        ],
        "count" : 7,
        "keys" : 2,
        "ok" : 1
}

另一种查询方法(添加了查询条件):


db.test.group({
  cond: {"name":"zs"},
  key : {"name" : true},
  initial : {"count":0},
  reduce : function(doc, prev){
     prev.count+=doc.count
  }
})


 

[ { "name" : "zs", "count" : 18 } ]