2016-09-06 10 views
0

を持って、私は次、モンゴDB - グループ化と実装

JSONリスト行うモンゴDBクエリの書き込みしようとしている - 私のコレクションでドキュメントを表現し、

産業[]:

{ 
    "_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の値を集計しようとしていますが、値はindustryCategoryです。基本的に、私が探しています出力は次のようなもので、

Travel: 2 
Dining: 1 

私は、次のことをやろうとしている

産業は、

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

      ]) 

コレクションの名前である私が」空の結果を得る。私ができることを提案してください。

答えて

0

まあ、私は誰も答えていませんでした。しかし、その間、私は自分自身でそれを理解することができました。以下の答え、あなたが(サブ文書のリストを)配列を反復処理する必要がどこに

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

は基本的に、 unwindを使用する投稿。これは少なくとも私にとっては生産的な学習でした。