2014-09-03 29 views
3

多个字段这是我的文档结构:分组在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 
} 

回答

2

是可能的,你可以不喜欢下面

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

嗯听起来合乎逻辑,但为什么我收到“语法错误:意外标记:”? ? – vmr 2014-09-03 15:53:57

+1

@vmr在'_id'定义中使用括号'{}',而不是括号'[]'。 – JohnnyHK 2014-09-03 16:18:15

+0

@JohnnyHK谢谢,更新我的代码片段。 – 2014-09-03 17:00:44