mongodb aggregate group 分组我想要查询出来多个字段,该怎么写,例子里面都是只有_id跟另外一个聚合结果?

mongodb aggregate group 分组我想要查询出来多个字段,该怎么写,例子里面都是只有_id跟另外一个聚合结果。

阅读 17.1k
3 个回答

在initial中把你想要的字段标记出来,使用count,count_1,count_2,count_3来代表你要查询的字段。

query = {key:"value"}
initial = {
    "count" : 0,
    "count_1":0,
    "count_2":0,
    "count_3":0
}
reduce = function(doc,prev){
    prev.count += doc.count; 
    prev.count_1 += doc.count_1;
    prev.count_2 += doc.count_2;
    prev.count_3 += doc.count_3;
}

db.test.group({
     "key" : query,         
     "initial" :initial, 
     "$reduce" : reduce
     }) 
新手上路,请多包涵
db.junk.aggregate([
    { "$group": {
        "_id": {
            "city": "$city",
            "cat": "$cat"
        },
        "Q1": { "$sum": "$Q1" },
        "Q2": { "$sum": "$Q2" },
        "Q3": { "$sum": "$Q3" },
        "Q4": { "$sum": "$Q4" }
    }}
新手上路,请多包涵

db.studentClass.aggregate(
  [
    { "$match" : { name: {

    $in: ["小明", "小红"]
} }},
{"$sort":{time:-1}},

    { "$group" : { "_id" : "$userid","userName":{$first:"$userName"},"userSex":{$first:"$userSex"}, "totalScore":{$sum:"$score"}} }
    
  ])
类似这种,_id是要分组的字段,其他要展示的字段,可以使用$first来获取分组中的第一条,然后其他的就是网上都能搜索到的汇总记录,比如$sum,$avg等等的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题