2017-02-25 148 views
2

我已經指派我的收藏裏的人,地位簡單地像下面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和內部的每個狀態的,通過狀態計數相同如下。

[ 
    { 
     "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 
     } 
     ] 
    } 
] 

不過,我已經寫代碼,它只能通過狀態只有分組。請在下面找到查詢。

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

謝謝,它的工作!還假設該集合有另一列。我如何添加特定的列到這個結果。希望你有我的問題 –