Dieses Verhalten hat nichts mit $lookup zu tun , weil das Standardverhalten für $unwind
ist, Dokumente auszulassen, bei denen das referenzierte Feld fehlt oder ein leeres Array ist.
Um die abgewickelten Dokumente auch bei profile.universities aufzubewahren ein leeres Array ist, können Sie seine preserveNullAndEmptyArrays setzen Option auf 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()