如何使用MGO聚合管道查找符合特定条件的所有嵌入文档

时间:2016-08-15 19:59:43

标签: mongodb go aggregation-framework mgo

假设我在MongoDB的Groups集合中有以下数据

[
    {
        “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”
  }
]

1 个答案:

答案 0 :(得分:0)

试试这个

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