2016-06-16 9 views
3

のは、私はそれぞれのカテゴリ MongoDBの集計ドキュメント

  • によって

    1. グループ文書に"aggregation"パイプラインのいくつかの並べ替えを構築しようとしている

      {_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} 
      

      以下のように我々は、文書のコレクションを持っているとしましょうカテゴリ、上位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} 
        ]},   
    ] 
    

    のようなものである必要があり、私はカテゴリリストに
  • 繰り返し検索{Xカテゴリー}を特定した結果に

    1. を生成するために複数の手順を実行します。 [ 'カウント'、 'DESC']]、限界:2}コマンド
    2. つの共通配列

    に結果をマージはとにかくにありこれを"aggregation"の方法で教えてください。

  • +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。