Обновление всех ссылок документа в разных коллекциях при использовании встраивания - PullRequest
0 голосов
/ 06 июня 2019

Я спроектировал базу данных и модели так, чтобы они содержали смеси встраивания (для лучшей производительности чтения) и ссылок (логика моделей требует этого) Я хочу обновить все вхождения документа в других коллекциях (где на этот документ ссылается _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, и я должен принять обновления зависимостей?

Другой пример, класс, в котором есть несколько учеников: (я использую мангуст для моделирования)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...