mongoDB展开&x2B;查找返回多个对象

mongoDB展开&x2B;查找返回多个对象,mongodb,aggregation-framework,database,Mongodb,Aggregation Framework,Database,我试图在MongoDB中构建一个查询,以便合并来自两个集合的数据:我有一个应用程序集合和一个功能集合,每个应用程序包含一个功能数组\u id,我希望每个应用程序包含一个功能对象数组: app{ name, description, [requirements_id1, requirements_id2 ... ] } feature{ name, description } 在放松和查找之后,我想获得如下内容 app{ name,

我试图在MongoDB中构建一个查询,以便合并来自两个集合的数据:我有一个应用程序集合和一个功能集合,每个应用程序包含一个功能数组\u id,我希望每个应用程序包含一个功能对象数组:

app{
    name,
    description,
    [requirements_id1, requirements_id2 ... ]
    } 

feature{
    name,
    description
}
在放松和查找之后,我想获得如下内容

app{
    name,
    description,
    [feature1{
        name,
        description
    },      
    feature2{
        name,
        description
    }]
}
我在mongodb文档中编写了这个查询

db.app.aggregate([
   {
      $unwind: "$features"
   },
   {
      $lookup:
         {
            from: "features",
            localField: "features",
            foreignField: "_id",
            as: "features"
        }
   },
   {
      $match: { "_id": '123456789' }
   }
])
它可以工作,但不是一个包含一系列特征的单个对象,而是一个包含一系列特征的对象,每个特征只有一个

[app{
    name,
    description,
    [feature1{
        name,
        description
    }]
}

app{
    name,
    description,
    [feature2{
        name,
        description
    }]
}]

当然,除了“功能”字段外,应用程序对象是相同的。我如何才能摆脱获得一个包含多个功能的单一应用程序的问题?

删除
$unwind
如果您使用的是3.4版或更高版本,请在id和
$push
上使用
$group
功能以获得正确的形状。感谢您的回答,似乎只需从查询中删除$unwind即可!