2016-08-15 10 views
0

Допустим, у меня есть следующие данные в Groups коллекции в MongoDBКак использовать агрегацию трубопровод ГГО, чтобы найти все встроенные документы, соответствующие определенным критериям

[ 
    { 
     “Group”: { 
      “_id”: 1, 
      “Requests”: [ 
       { 
        “_id”:1, 
        “name”:”Request A” 
       }. 
       { 
        “_id”:2, 
        “name”:”Request B” 
       } 
      ]  
     } 
    }, 
      { 
     “Group”: { 
      “_id”: 2, 
      “Requests”: [ 
       { 
        “_id”:3, 
        “name”:”Request C” 
       }. 
       { 
        “_id”:4, 
        “name”:”Request D” 
       } 
      ]  
     } 
    } 

] 

Кроме того, предположим, что у меня есть следующие функции

func GetRequests(requestIDs []string) (Request[] error){ 
     //NEED TO IMPLEMENT W/ MGO 
} 

Есть ли способ использовать конвейер агрегации (или нет, если он не нужен) для возврата только проекции запросов, соответствующих requestIDs?

Например

Ввод пробы отражает requestIds

[1,2,4] 

Пример вывода из mgo агрегации/запроса

[ 
    { 
    “_id”:1, 
    “name”:”Request A” 
    }, 
    { 
    “_id”:2, 
    “name”:”Request B” 
    }, 
    { 
    “_id”:4, 
    “name”:”Request D” 
    } 
] 

ответ

0

Тест

db.groups.aggregate([{$unwind : '$Requests'}, 
        {$match: {'Requests._id' :{$in: [1,2,4]}}}, 
        {$project : {_id : '$Requests._id',name:'$Requests.name'}}]);