2

난 그저 내가 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 
     } 
     ] 
    } 
] 

그러나, 나는 쓰기 코드를 가지고 있고 그것은 단지 상태 단지별로 그룹화. 아래 검색어를 찾으십시오.

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

감사합니다, 그것은 작동합니까! 또한 콜렉션에 다른 컬럼이 있다고 가정하십시오. 이 특정 열을이 결과에 어떻게 추가합니까? 당신이 내 질문을 가지고 있기를 바랍니다. –