2016-12-19 8 views
1

私のアプリは以下のドキュメントを持っています。Mongodbはグループ内のすべての値を返します

{ 
“name” : “sample1”, 
“a” : 1, 
“b” : 1000, 
“value” : “AA” 
}, 
{ 
“name” : “sample2”, 
“a” : 1, 
“b” : 1000, 
“value” : “BB” 
}, 
{ 
“name” : “sample1”, 
“a” : 2, 
“b” : 2000, 
“value” : “CC” 
} 

「A」と「B」フィールドでグループ、そしてドキュメントが同じ「A」と「B」を持っている場合は、リストで各データを取得します。 次の出力リストのように返信するにはどうすればよいですか?

[ 
{ 
    “a” : 1, 
    “b” : 1000, 
    “result” : [ 
    { name : “sample1”, value : “AA” }, 
    { name : “sample2”, value : “BB” } 
    ] 
}, 
{ 
    “a” : 2, 
    “b” : 2000, 
    “result” : [ 
    { name : “sample1”, value : “CC” }, 
    ] 
} 
] 

答えて

1

あなたはそれが

{ 
    "_id":{ 
     "a":2, 
     "b":2000 
    }, 
    "result":[ 
     { 
     "name":"sample1", 
     "value":"CC" 
     } 
    ] 
}{ 
    "_id":{ 
     "a":1, 
     "b":1000 
    }, 
    "result":[ 
     { 
     "name":"sample1", 
     "value":"AA" 
     }, 
     { 
     "name":"sample2", 
     "value":"BB" 
     } 
    ] 
} 
を返します。この

db.grp.aggregate([ 
    { 
     $group:{ 
     _id:{ 
      a:"$a", 
      b:"$b" 
     }, 
     result:{ 
      $push:{ 
       name:"$name", 
       value:"$value" 
      } 
     } 
     } 
    } 
]) 

などの集約フレームワークでこれを達成することができます

関連する問題