在MongoDB中按多个字段分组

时间:2014-09-03 14:13:06

标签: mongodb

这是我的文档结构:

{
    "ip_address" : "192.168.133.12",
    "timestamp" : "2014-08-28T06:41:24",
    "response" : 400,
    "uri" : {
        "term" : "Something",
        "page" : "10",
        "category" : "category 10"
    }
}

如果我想对单个字段'响应'进行groupby,我将按如下方式进行:

db.collName.aggregate({ $group : {_id : "$response", total : { $sum : 1 }} });

如何按2分组或说3个字段?是否可以将多个字段分组,以便它们形成具有相似值的聚合?

我的意思是这样的:

{
    "result" : [ 
        {
            "_id" : "responseValue" + "ip_addressValue",
            "totaling" : 3
        }
    ],
    "ok" : 1
} 

1 个答案:

答案 0 :(得分:2)

是的,你可以做类似下面的事情

db.collName.aggregate({ $group : 
 {
   "_id" : {"response":"$response", "ip_address":"$ip_address"}, 
   total : { $sum : 1 }
 } 
});