Denne adfærd er ikke relateret til $lookup , det er fordi standardadfærden for $unwind
er at udelade dokumenter, hvor det refererede felt mangler eller et tomt array.
For at bevare de afviklede dokumenter, selv når profile.universities er et tomt array, kan du indstille dets preserveNullAndEmptyArrays mulighed for at 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()