@klinnov

Как правильно сформировать структуру БД?

Работаю с NodeJS и Mongo. Не могу привыкнуть к не реляционной БД после реляционной.
Один из принципов не реляционной БД стоит в том, что в одном документе должно храниться все что нам необходимо для работы на одном экране. Ну то есть если у нас есть посты то в документе должна быть вся информация о посте, вместе например с автором поста.
То есть такая структура:
- Название поста
- описание
- Имя автора

И здесь ступор. А что если автор изменил свое имя? То есть у него есть еще своя коллекция данных, например:
- ID
- имя
- Почта и т.д.
Получается делать отношение пост - ID пользователя это не верно. Но как тогда при просмотре поста получить верное имя юзера а не старое?
  • Вопрос задан
  • 516 просмотров
Решения вопроса 1
impeee
@impeee
nodejs/erlang developer
Самый простой вариант - завести новое поле в постах, например "user_id", хранящее уникальный _id пользователя, создавшего этот пост, и например агрегацией вытаскивать данные пользователя, дополнительно поработав фильтром:

db.posts.aggregate([
   {
      $lookup: {
          from: 'user',
          localField: 'user_id',
          foreignField: '_id',
          as: '_user'
       }
   }
]);


Либо в коллекции пользователя завести поле 'posts', которое являлось бы массивом, и хранило _id постов. Однако в таком случае стоит помнить о лимите на размер коллекции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MetaAbstract
@MetaAbstract
Архитектор информационных систем и баз данных. Ful
Либо SQL+Join, либо NoSQL с эмуляцией join или дублированием и синхронизацией данных. В целом в Mongo есть https://docs.mongodb.com/manual/reference/operator...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы