Hành vi này không liên quan đến $lookup
, đó là do hành vi mặc định cho $unwind
là bỏ qua các tài liệu thiếu trường được tham chiếu hoặc một mảng trống.
Để bảo quản các tài liệu chưa ràng buộc ngay cả khi profile.universities
là một mảng trống, bạn có thể đặt preserveNullAndEmptyArrays
của nó tùy chọn thành 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()