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