2016-08-15 59 views
0

可以说我有一个Groups收集以下数据在MongoDB中如何使用MGO聚合管道找到所有的嵌入文档符合特定条件的

[ 
    { 
     “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的请求的投影?

例如

样品输入反射从mgo聚合requestIds

[1,2,4] 

样本输出/查询

[ 
    { 
    “_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'}}]); 
相关问题