Хорошо, спустя века я действительно нашел решение, которое намного проще, чем кроличья нора, которую я провалил.
{ $match: {id: 100001}},
{ $lookup:
{
from: 'faculties',
localField: 'id',
foreignField: 'schoolId',
as: 'faculties',
}
},
{ $unwind: {
path: "$faculties",
preserveNullAndEmptyArrays: true
}
},
{ $lookup:
{
from: 'subjects',
localField: 'faculties.id',
foreignField: 'facultyId',
as: 'faculties.subjects',
}
}
, который возвращает точный вывод, который я хотел. Ключом является окончательный поиск, возвращающий as: 'faculties.subjects'
, который ставит предметы на факультеты, что является первым ребенком в школах.
Если вам нужна дополнительная вложенность, вам нужно просто идти as: faculties.subjects.students.names
, например, каждый раз, когда вы углубляетесь