【问题标题】:Mongodb $addFields does not outputs the data if nullMongodb $addFields 如果为 null 则不输出数据
【发布时间】:2020-07-15 22:48:41
【问题描述】:

我正在努力解决一个烦人的问题。我在查询中使用聚合,我需要加入一些集合,输出必须是一个对象。这是我的代码...

usersModel.aggregate([
    {
        $match: { _id: ObjectId(req.params.id) }
    },
    {
        $lookup: {
            from: "agents",
            as: "agent",
            let: { "idAgent": "$agent" }, //$agent can be null
            pipeline: [
                {
                    $match: {
                        $expr: {
                            $eq: ['$_id', "$$idAgent"] 
                        },
                    }
                }
            ],
        }
    },
    { $unwind: { path: '$agent', preserveNullAndEmptyArrays: true } },
    {
        $addFields: {
            agent: "$agent", //If $agent is null, it does not output the field agent...
        }
    }

])

如果在最后一个Stage中,字段$agent为null,$addFields不输出该字段。 还有其他方法可以做到吗?查找后我只需要代理字段作为对象。谢谢

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    使用$addFields 添加$ifNull 条件

    {
      "$addFields": {
        "agent": { "$ifNull": ["$agent", {}] }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 2015-11-02
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 1970-01-01
      • 2016-07-21
      相关资源
      最近更新 更多