2016-09-13 20 views
0

誰でもmongodbの以下の集計操作を手伝ってもらえますか?アイデアとグループIDを持つアイテムのコレクションを持ち、グループIDでグループ化してください。例えば、アイテムのコレクションのために:mongoDBのIDによるグループ化

{ 
    "id": 1, 
    "group_id": 10, 
    "data": "some_data", 
    "name": "first" 
}, 
{ 
    "id": 2, 
    "group_id": 10, 
    "data": "some_data", 
    "name": "second" 
}, 
{ 
    "id": 3 
    "group_id": 20, 
    "data": "some_data", 
    "name": "third" 
} 

は、以下の構造を有する基の新しいコレクションを作成します。

{ 
    "id": 10, 
    "items": [ 
     { 
      "id": 1, 
      "group_id": 10, 
      "data": "some_data", 
      "name": "first" 
     }, 
     { 
      "id": 2, 
      "group_id": 10, 
      "data": "some_data", 
      "name": "second" 
     } 
    ] 
}, 
{ 
    "id": 10, 
    "items": [ 
     { 
      "id": 2, 
      "group_id": 20, 
      "data": "some_data", 
      "name": "third" 
     } 
    ] 
} 

JavaおよびばねデータのMongoDBと対応する断片もまた理解されるであろう。 実際、私はJavaで同じことをやっており、ページングの最適化のためにこのロジックをmongoに移したいと思っています。

答えて

2

あなたはfolowwingシンプルgroup集約でそれを行うことができます:あなたは出力したい場合は、新しいコレクションに集約からのデータは

+0

$out演算子を使用するに

db.table.aggregate( [ { $group: { _id : "$group_id", items : { "$push" : "$$ROOT" } } } ] ); 

おかげで、完璧に動作します! –

関連する問題