在MongoDB中按多个字段进行分组

3
这是我的文档结构:

这是我文档的结构:

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

如果我想对单个字段“response”进行分组,我将按以下方式执行:
db.collName.aggregate({ $group : {_id : "$response", total : { $sum : 1 }} });

我该如何按2个或3个字段进行分组?是否可以按多个字段进行分组,以形成具有相似值的聚合?

我的意思是像这样:

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

2
是的,可以实现,您可以按照以下方式进行操作。
db.collName.aggregate({ $group : 
 {
   "_id" : {"response":"$response", "ip_address":"$ip_address"}, 
   total : { $sum : 1 }
 } 
});

听起来很合理,但为什么我会收到“语法错误:意外的标记:”? - vmr
1
@vmr 在 _id 的定义中使用大括号 {},而不是方括号 [] - JohnnyHK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接