Реализовать список, который является гибким в отношении типов схем в MongoDB?

#database #mongodb #database-design #nosql #mongoose-schema

Вопрос:

Допустим, у меня есть онлайн-курс, и каждый курс состоит из разных модулей:

 Course
 Module 1
 Module 2
 Module 3
 

Однако каждый из этих модулей может быть другого типа: таким образом, модуль 1 может быть a Video Lecture с большой расшифровкой, в то время как модуль 2 Exercise -это и т. Д. С точки зрения пользовательского опыта, я бы хотел, чтобы пользователь просто щелкнул по модулю, а затем перешел на соответствующую страницу.

Как бы я спроектировал что-то подобное в MongoDB, где эти модули могут быть, по сути, разных типов (видео, текст и т.д.), Которые, в свою очередь, будут иметь разные схемы, связанные с ними?

Моя попытка решения:

Одно из решений, которое я придумал, — сохранить их в виде массива:

 [{
 title: "Lecture on Cats",
 videoUrl: "https..."
},
{
 title: "Lecture on Cats",
 text: "Welcome to this text..."
}]
 

Но: …но что, если бы я не хотел внедрять все напрямую, потому что для каждого модуля слишком много данных? Я не уверен, как бы я решил эту проблему со схемами, так как, похоже, у меня может быть только один тип схемы внутри массива?