2016-12-19 3 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” : 1, 
    “b” : 1000, 
    “result” : [ 
    { name : “sample1”, value : “AA” }, 
    { name : “sample2”, value : “BB” } 
    ] 
}, 
{ 
    “a” : 2, 
    “b” : 2000, 
    “result” : [ 
    { name : “sample1”, value : “CC” }, 
    ] 
} 
] 

ответ

1

вы можете добиться этого с рамок агрегации, как этот

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

он возвращает

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