Я спроектировал базу данных и модели так, чтобы они содержали смеси встраивания (для лучшей производительности чтения) и ссылок (логика моделей требует этого)
Я хочу обновить все вхождения документа в других коллекциях (где на этот документ ссылается _id и есть некоторые другие поля), когда я использую смесь встраивания и ссылок.
Я разработал свою модель MongoDB таким образом, чтобы, если я хочу получить документ, например, у студента, у которого есть несколько курсов, я получил название курса в поддокументе и помимо его _id.
Вопрос в том, что если кто-то изменит название курса? этот студент также должен быть обновлен. это не реальная проблема, но что, если зависимости становятся все больше и больше (и мне все еще нужно хранить некоторые другие данные рядом с _id для лучшей производительности чтения), и все быстро выходит из-под контроля? Как отслеживать зависимые документы при обновлении другого документа?
const schema = new Schema({
_id: Types.ObjectId,
name: {
type: String,
required: true
},
nStudents: {
type: Number,
min: 0,
default: 0
},
students: [{
_id: {
type: Types.ObjectId,
ref: 'student'
},
name: { //For better read performance , but what if student name changes?what if I have dozens of these kinds ofdependencies in other models?
type: String,
required: true
},
image: String
}]
})
Я что-то здесь не так делаю, и я не должен смешивать встраивание и ссылки?
или это просто так, как все работает в базах данных без SQL, и я должен принять обновления зависимостей?
Другой пример, класс, в котором есть несколько учеников: (я использую мангуст для моделирования)