Detta beteende är inte relaterat till $lookup
, det beror på att standardbeteendet för $unwind
är att utelämna dokument där det refererade fältet saknas eller en tom array.
För att bevara de avrullade dokumenten även när profile.universities
är en tom array kan du ställa in dess preserveNullAndEmptyArrays
alternativet till 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()