2014-09-03 54 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