Mongodb $ addFields не выводит данные, если ноль - PullRequest
1 голос
/ 03 апреля 2020

Я борюсь с досадной проблемой. Я использую агрегацию в запросе, и мне нужно объединить некоторые коллекции, и выходные данные должны быть объектом. Это мой код ...

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...
        }
    }

])

Если в последней стадии поле $ agent равно нулю, $ addFields не выводит поле. Есть ли другой подход к этому? Мне нужно просто поле агента в качестве объекта после поиска. Спасибо

1 Ответ

1 голос
/ 03 апреля 2020

Добавить $ifNull условие с $addFields

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