Я не уверен, что неправильно понял ваш вопрос, но нет проблем с созданием отдельных коллекций для каждого типа записей (задание, урок и курс), а затем просто с указанием идентификатора требуемых уроков и заданий по мере необходимости. Это дало бы вам видимость иерархии.
Например, у вас может быть что-то вроде ниже для курса
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ev"
},
"course_name": "Course 1",
"lessons": [
"_id": {
"$oid": "5bbf5d8e1ed05050136206ew"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206ex"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206ey"
},
]
}
и это для урока
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ev"
},
"lesson_name": "Lesson 1",
"activity": [
"_id": {
"$oid": "5bbf5d8e1ed05050136206ez"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206ea"
},
"_id": {
"$oid": "5bbf5d8e1ed05050136206eb"
},
]
}
Если вам известны подробности, которые вы хотите отобразить, и хотите минимизировать количество запросов, нет проблем с включением некоторых деталей в более чем одну коллекцию, пример ниже для курсов
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ev"
},
"course_name": "Course 1",
"lessons": [
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ew"
},
"lesson_name": "Lesson 1"
},
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ex"
},
"lesson_name": "Lesson 2"
},
{
"_id": {
"$oid": "5bbf5d8e1ed05050136206ey"
},
"lesson_name": "Lesson 3"
},
]
}
Надеюсь, это поможет.