2016-06-16 2 views
3

의 우리가MongoDB를 집계 문서

{_id:1, name:'a', category:'c1', count:1} 
{_id:2, name:'b', category:'c1', count:3} 
{_id:3, name:'c', category:'c1', count:5} 
{_id:4, name:'d', category:'c2', count:2} 
{_id:5, name:'e', category:'c2', count:3} 
{_id:6, name:'f', category:'c2', count:6} 
{_id:7, name:'g', category:'c2', count:7} 

나는 각각에 대해 카테고리

  • 에 의해

    1. 그룹 문서에 "aggregation" 파이프 라인의 일종을 구축하기 위해 노력하고있어 다음과 같이 문서의 컬렉션이 있다고 가정 해 봅시다 카테고리에서 상위 2 개 문서를 내림차순으로 개수순으로 반환

    경우, 예상되는 결과는 현재

    [ 
        {_id:'c1: docs:[ 
         {_id:3, name:'c', category:'c1', count:5}, 
         {_id:2, name:'b', category:'c1', count:3} 
        ]}, 
        {_id:'c2: docs:[ 
         {_id:7, name:'g', category:'c2', count:7}, 
         {_id:6, name:'f', category:'c2', count:6} 
        ]},   
    ] 
    

    같은 것을해야한다, 나는 결과

    1. 카테고리 목록을
    2. 반복 찾기를 확인을 생산하기 위해 여러 조치를 취할 {범주 : X}, {종류 : [ '횟수', 'DESC']], 제한 하나 개 일반적인 배열

    로 2} 명령

  • 병합 결과는 거기다 이 "aggregation" 방식으로 이것을 chieve?

  • +0

    검색어를 사용해 보셨습니까? – Shrabanee

    +0

    현재 언급 한대로 여러 단계를 수행하고 있습니다. – Lee

    +1

    어쨌든, 나는 대답을 알아 냈다. 모든 투표와 의견에 감사드립니다. 잠시 후 답변을 게시합니다. – Lee

    답변

    0

    직접 답변을 알아낼 수 있도록 관리했습니다. 그것은 아래와 같습니다.

    collection.aggregate([ 
        {$sort:{category:1, count:-1}}, 
        {$group:{_id:'$category', docs:{$push:{_id:'$_id', name:'$name', count:'$count'}}}}, 
        {$project:{_id:1, docs:{$slice:['$docs', 2]}}} 
    ]) 
    

    $sort, $push$slice 작업 tegether은 트릭을 재생합니다.