Mongodb 在mongo脚本中的映射内添加条件

Mongodb 在mongo脚本中的映射内添加条件,mongodb,aggregation-framework,aggregate,Mongodb,Aggregation Framework,Aggregate,此代码运行良好。我加入了两个不同的文档,但industryCategoryMapping有一个对象IndustryCategory数组。我想在对象数组中添加条件 db.brand.aggregate([ { $lookup: { from: "industryCategoryMapping", as: 'Category', let: { entityId: { $toString : '$_id' }},

此代码运行良好。我加入了两个不同的文档,但industryCategoryMapping有一个对象IndustryCategory数组。我想在对象数组中添加条件

db.brand.aggregate([
   { $lookup:
        {
          from: "industryCategoryMapping",
           as: 'Category',
        let: { entityId: { $toString : '$_id' }},
        pipeline: [
          {
            $match: {
              $expr: {
                $and: [
                  { $eq: ['$type', 'BRAND'] },
                  { $eq: ['$$entityId', '$entityId'] },


                ]
              }
            }
          }

        ]
      }
    }, {
        $project: {
            name: 1, industryCategoryMapping: {
                $map:
                {
                    input: "$Category",
                    as: "each",
                    in: '$$each.industryCategories'
                }
            }
        }
    },

    ])
并返回结果

    "_id" : ObjectId("5dfb18a6dfb32f87deeffa13"),
    "name" : "Gatorade",
    "industryCategoryMapping" : [ 
        [ 
            {
                "_id" : ObjectId("5dd26e6e34d10718f843caa9"),
                "isDefault" : true,
                "industryCategory" : {
                    "_id" : ObjectId("5def644605ea8b5a7c97b48c"),
                    "industryCategory" : {
                        "_id" : ObjectId("5def644605ea8b5a7c97b48f")
                    }
                }
            }, 
            {
                "_id" : ObjectId("5dfb1514dfb32f87deeff97f"),
                "isDefault" : false,
                "industryCategory" : {
                    "_id" : ObjectId("5df8990c4d9c000b9c87592a"),
                    "industryCategory" : {
                        "_id" : ObjectId("5df8990c4d9c000b9c87592b")
                    }
                }
            }
        ]
    ]
}

但在给定的Json结果中,industryCategoryMapping数组有2个对象,我只需要isDefault:true类型对象。有人能帮我忽略isDefault:给定数组中的false对象吗。

我想你应该使用
$filter
而不是
$map
。运算符允许您指定一个条件。@prasad\您的意思是说$filter:{input:$Category',as:“each”,cond:{$eq:[“$$each.industryCategories.isDefault”,'true']}如果没有引号,它就不能工作;这是一个布尔值。在查找阶段之后,文档结构是什么样子的。您能否仅通过查找运行查询。@srinivasy,@prasad感谢您的快速回复。事实上,后来我在json中发现了问题。所以我做了放松手术,在那之后,它就像预期的那样工作。如果您观察到行业类别映射[[有两个大括号,表示reson筛选器不工作。