@magary4

Правильно ли я понимаю проектирование БД на mongo?

Хочу уточнить вопросы т.к. раньше использовал SQL
есть коллекции users и events = [{name:"",date:"",user_id:""}]

1. создавая новые events я должен кроме полей name,date,user_id продублировать еще инфу о юзере которая может пригодиться для вывода например списка events [{name:"",date:"",user_id:"",username:"",email}]
Когда пользователь меняет свои данные - я пробегаюсь по всем events и меняю соотвествующее поле

2. если к events нужно будет добавлять reviews - идея монго в том чтоб поместить вложенной коллекцией [{name:"",date:"",user_id:"",username:"",email:"", events: [{....},{...}] }] а не отдельной как это выглядело бы в SQL ???? насколько проблематично и ресурсоемко будет после вывести к примеру список 10 последних reviews
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вы пытаетесь впихнуть реляционную модель в рамках докментоориетированной монги.

name,date,user_id

user_id вообще быть не должно.

Вообще самый простой способ, представьте себе обычную реляционную базу, затем представьте себе запросы с джойнами, которые вы хотите юзать. Результат этого запроса - и есть ваша коллекция. Обновились записи в табличках - перестроили коллекцию с нуля.

Коллекция в этом случае будет агрегацией данных, эдакий кэш. Можно держать несколько коллекций, как в случае с реляционными базами и формировать часть коллекций динамически через map/reduce при изменении данных. Как оптимизировать обновление этой выборки - это уже ваша задача как программиста.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы