首页 > 解决方案 > 如何使用聚合填充数组内的字段

问题描述

这是我使用 _id 从元素数组返回对象的查询。看起来像这样,

db.users.aggregate([
    {$match: { "business_idea._id": ObjectId('613ee10818bc570bceb1d060') }},
    {$project: {
        business_idea: {$filter: {
            input: '$business_idea',
            as: 'bi',
            cond: { $eq: ["$$bi._id", ObjectId('613ee10818bc570bceb1d060') ] }
        }}
    }}
])

这个查询产生这样的输出,

{
    "_id" : ObjectId("613e418f19968b0652bbbb24"),
    "business_idea" : [
        {
            "business_tags" : [
                ObjectId("613ee063b11cee0b7dde1086")
            ],
            "_id" : ObjectId("613ee10818bc570bceb1d060"),
            "business_id" : "613ee10818bc570bceb1d05f",
            "business_name" : "Business_2",
            "business_type" : "No type",
            "business_desc" : "desc, desc-2",
            "business_logo" : "https://neur-dev.s3.ap-south-1.amazonaws.com/logo/21091631510791555.jpeg",
            "isDeleted" : false,
            "business_name_to_lower" : "business_2"
        }
    ]
}

现在我只想business_tags使用businesstags._id

任何人都可以帮我解决这个问题,谢谢。

标签: mongodbmongoosemongodb-queryaggregation-framework

解决方案


要查找相关标签,您必须通过$lookup聚合获取它们,如下所示:


{
"$lookup":{
  from: 'businesstags',
  localField: 'business_tags',
  foreignField: '_id',
  as: 'new_tags'
}
}

推荐阅读