Perilaku ini tidak terkait dengan $lookup
, itu karena perilaku default untuk $unwind
adalah untuk menghilangkan dokumen di mana bidang yang direferensikan tidak ada atau array kosong.
Untuk melestarikan dokumen yang dibatalkan bahkan ketika profile.universities
adalah array kosong, Anda dapat mengatur preserveNullAndEmptyArrays
pilihan untuk true
:
db.users.aggregate([
{
$unwind: "$profile",
$unwind: {
path: "$profile.universities",
preserveNullAndEmptyArrays: true
}
},
{
$lookup: {
from: "universities",
localField: "profile.universities._id",
foreignField: "_id",
as: "profile.universities"
}
},
{
$group: {
_id: "$_id",
universities: {
$addToSet: "$profile.universities"
}
}
}
]).pretty()