2017-02-25 21 views
2
私は STATUSによって各STATUSの同じ ASSIGN_IDで、その内のグループに私がしたいだけで

MongoDBの集計ネストされたグループ

[ 
{"ASSIGN_ID": "583f84bce58725f76b322398", "STATUS": 1}, 
{"ASSIGN_ID": "583f84bce58725f76b322398","STATUS": 4}, 
{"ASSIGN_ID": "583f84bce58725f76b322398","STATUS": 4}, 
{"ASSIGN_ID": "583f84bce58725f76b322398","STATUS": 3}, 
{"ASSIGN_ID": "583f84bce58725f76b322311","STATUS": 1}, 
{"ASSIGN_ID": "583f84bce58725f76b322311","STATUS": 3}, 
{"ASSIGN_ID": "583f84bce58725f76b322322","STATUS": 1}, 
{"ASSIGN_ID": "583f84bce58725f76b322322","STATUS": 4} 
] 

以下のように、このデータを私のコレクション内の人、ステータスが割り当てられている

以下のように。

[ 
    { 
     "ASSIGN_ID":"583f84bce58725f76b322398", 
     "STATUS_GROUP":[ 
     { 
      "STATUS":1, 
      "COUNT":1 
     }, 
     { 
      "STATUS":3, 
      "COUNT":1 
     }, 
     { 
      "STATUS":4, 
      "COUNT":2 
     } 
     ] 
    }, 
    { 
     "ASSIGN_ID":"583f84bce58725f76b322311", 
     "STATUS_GROUP":[ 
     { 
      "STATUS":1, 
      "COUNT":1 
     }, 
     { 
      "STATUS":3, 
      "COUNT":1 
     } 
     ] 
    }, 
    { 
     "ASSIGN_ID":"583f84bce58725f76b322322", 
     "STATUS_GROUP":[ 
     { 
      "STATUS":1, 
      "COUNT":1 
     }, 
     { 
      "STATUS":4, 
      "COUNT":1 
     } 
     ] 
    } 
] 

しかし、私は、書き込みコードを持っているとそれだけでSTATUSだけでグループ化されました。以下の質問を見つけてください。

Inspection.aggregate([ 
    {$group: { 
    "_id": '$STATUS', 
    "count" : { $sum : 1 }}}], function (err, result) { 
}}); 

この問題を解決するために手伝ってください。シェルで

答えて

7

このコマンドを使用し、それは が、それはあなたの問題を解決していただければ幸いです、あなたのサンプルケースのために働くだろう、

db.testCollection.aggregate([{ 
    $group: { 
     _id: { 
      ASSIGN_ID: "$ASSIGN_ID", 
      STATUS: "$STATUS" 
     }, 
     count: { 
      "$sum": 1 
     } 
    } 
}, { 
    $group: { 
     _id: "$_id.ASSIGN_ID", 
     STATUS_GROUP: { 
      $push: { 
       STATUS: "$_id.STATUS", 
       count: "$count" 
      } 
     } 
    } 
}]) 

出力:

{ 
    "_id": "583f84bce58725f76b322398", 
    "STATUS_GROUP": [{ 
     "STATUS": 3, 
     "count": 1 
    }, { 
     "STATUS": 4, 
     "count": 2 
    }, { 
     "STATUS": 1, 
     "count": 1 
    }] 
}, { 
    "_id": "583f84bce58725f76b322311", 
    "STATUS_GROUP": [{ 
     "STATUS": 3, 
     "count": 1 
    }, { 
     "STATUS": 1, 
     "count": 1 
    }] 
}, { 
    "_id": "583f84bce58725f76b322322", 
    "STATUS_GROUP": [{ 
     "STATUS": 1, 
     "count": 1 
    }, { 
     "STATUS": 4, 
     "count": 1 
    }] 
} 
+0

おかげで、それは動作しません!また、コレクションに別の列があるとします。特定の列をこの結果に追加するにはどうすればよいですか。あなたが私の質問を持って願って –

関連する問題