我正在尝试将家庭子文档_ids更改为变量。
这是我的架构:
families: [
{
_id: {
type: mongoose.Types.ObjectId
},
name: {
type: String
},
relation: {
type: String
}
}
]
问题是,我可以让parent的_id显示在变量内部,但是当我试图获取家族的_ids在控制台日志中显示undefined
时。
将家庭子文档_ids转换为变量的正确查询是什么?
答案 0 :(得分:0)
请尝试:
db.yourCollection.aggregate([
{ $unwind: '$families' },
{ $project: { Ids: '$families._id' } }, { $group: { '_id': '$_id', subDocumentsIDs: { $push: '$Ids' } } }
])
输出:
/* 1 */
{
"_id" : ObjectId("5d58d3205a0d22d3c85d16f1"),
"subDocumentsIDs" : [
ObjectId("5d570b350e2fb4f72533d512"),
ObjectId("5d570b350e2fb4f71533d510"),
ObjectId("5d570b350e2fb4172533d511")
]
}
/* 2 */
{
"_id" : ObjectId("5d58d3105a0d22d3c85d1591"),
"subDocumentsIDs" : [
ObjectId("5d570b350e2fb4f72533d312"),
ObjectId("5d570b350e2fb4f71533d310"),
ObjectId("5d570b350e2fb4172533d311")
]
}
请以这为基本示例,并在需要时进行增强,如果您的集合包含大型数据集,则类似$unwind
的早期阶段会对性能产生影响,但是您可以通过以下方式轻松避免这种情况如前所述,使用$match
作为第一阶段,您可以获取父_id,然后在$match
中使用它来过滤文档