2016-09-06 3 views
0

Я пытаюсь написать запрос Монго DB, где я делаю следующее,Монго DB - Группировка и Имея Реализация

JSON список - Представление документов в моей коллекции,

промышленность []:

{ 
    "_id" : ObjectId("57aa6058be0c853c8cee34cd"), 
    "options": { 
     "paramList" : [ 
      { 
       "name" : "industryCategory", 
       "value" : "Travel", 
       "mandatory" : true 
      }, 
      { 
       "name" : "someOtherThing", 
       "value" : "dontMind", 
       "mandatory" : true 
      } 
     ] 
    } 
    "mostRecent" : true 
}, 
{ 
    "_id" : ObjectId("57aa6058be0c853c8cee34cd"), 
    "options": { 
     "paramList" : [ 
      { 
       "name" : "industryCategory", 
       "value" : "Dining", 
       "mandatory" : true 
      }, 
      { 
       "name" : "someOtherThing", 
       "value" : "dontMind", 
       "mandatory" : true 
      } 
     ] 
    } 
    "mostRecent" : true 
}, 
{ 
    "_id" : ObjectId("57aa6058be0c853c8cee34cd"), 
    "options": { 
     "paramList" : [ 
      { 
       "name" : "industryCategory", 
       "value" : "Travel", 
       "mandatory" : true 
      }, 
      { 
       "name" : "someOtherThing", 
       "value" : "dontMind", 
       "mandatory" : true 
      } 
     ] 
    } 
    "mostRecent" : true 
} 

Я пытаюсь группировать и получать количество значений для тех значений paramList, где name является industryCategory. По существу, на выходе я ищу что-то вроде этого,

Travel: 2 
Dining: 1 

Я пытаюсь сделать следующее,

промышленности это название коллекции,

db.Industry.aggregate (
      [ 
      {$match: {mostRecent: true}}, 
      {$group: { 
       _id: '$options.paramList.value', 
       count: {$sum: 1} 
       }}, 
       {$match: {'options.paramList.name': 'industryCategory'}} 

      ]) 

Я m получить пустой результат. Пожалуйста, предложите, что я могу сделать

ответ

0

Ну, у меня не было никого, кто отвечал бы. Но тем временем мне удалось разобраться в этом. Проводка ответ ниже,

aggregate (
      [ 
      {"$match": {mostRecent: true}}, 
      {"$unwind" : "$options.paramList"}, 
      {"$group" : 
       { 
       _id: "$options.paramList.value", 
       count: {$sum : 1} 
       } 
      } 
      ] 

По существу, использовать unwind везде, где вы должны перебрать массивы (список поддокументами). Это было продуктивное обучение, по крайней мере для меня.

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