【问题标题】:How to populate a field inside array with aggregation如何使用聚合填充数组内的字段
【发布时间】:2021-11-16 12:36:35
【问题描述】:

这是我使用 _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"
        }
    ]
}

现在我只想使用_idbusinesstags 集合中填充business_tags 的实际值。

谁能帮我解决这个问题, 谢谢。

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      相关资源
      最近更新 更多