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