Добрый день/вечер,
Столкнулся со сл. ситуацией.
В общем:
Есть коллекция "recommendations", в ней есть запись сл. вида:
{
"_id" : ObjectId("5c995106deafcc7c86b9f284"),
"id" : 777,
"name" : "developers",
"likesPeople" : [
{ "id" : 579 },
{ "id" : 398 }
]
}
Когда выполняю $lookup с коллекцией users по id`шникам в массиве recommendations.likesPeople (сл. образом):
db.getCollection('recommendations').aggregate([
{ $match: { id: 777 }},
{ $unwind: "$likesPeople" },
{ $lookup: {
from: "users",
localField: "likesPeople.id",
foreignField: "id",
as: "likesPeople"
} },
{ $unwind: "$likesPeople" },
{ $group : {
_id: '$_id',
likesPeople: { $push: "$likesPeople"},
id: { $first: '$id' }
}
}
])
Получаю результат:
{
"_id" : ObjectId("5c995106deafcc7c86b9f284"),
"id" : 777,
"likesPeople" : [
{
"_id" : ObjectId("5c99500adeafcc7c86b9f283"),
"id" : 579,
"name" : "Вася"
},
{
"_id" : ObjectId("5c99b429deafcc7c86b9f28b"),
"id" : 398,
"name" : "Маша"
}
]
}
Проблемы начинаются, когда массив likesPeople в коллекции recommendations - пустой:
{
"_id" : ObjectId("5c995106deafcc7c86b9f284"),
"id" : 777,
"name" : "developers",
"likesPeople" : []
}
После выполнения $lookup/$group, я получаю пустой результат и в следствии теряю возможность получить все остальные поля ( _id, id, name ). В какой то мере это логично...
В чем вопрос: Что нужно изменить в mongodb запросе, что бы в случаях когда likesPeople в коллекции не имеет значений (пустой), результат вернул мне все остальные поля:
{
"_id" : ObjectId("5c995106deafcc7c86b9f284"),
"id" : 777,
"name" : "developers",
"likesPeople" : null // или что угодно
}