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()