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

+1

@vmr Используйте фигурные скобки '{}', а не скобки '[]' в определении '_id'. – JohnnyHK

+0

@JohnnyHK Спасибо, обновил мой фрагмент кода. –

Смежные вопросы