Посмотреть полный код можно здесь: https://github.com/SeverInvest/movies-explorer-api
Создадим БД, состоящую из двух коллекций (в mongoDB так называются таблицы): user и video.
Каждый пользователь может иметь несколько карточек с видео. Каждая карточка с видео может принадлежать нескольким пользователям. Классическая связь многие-ко-многим. Но только mongoDB - нереляционная СУБД, и здесь лучше реализовать такую связь не через промежуточную таблицу (которая содержит id обеих таблиц), а с помощью встроенных методов.
Итак, стандартные схемы моделей выглядят так:
Задача: нужно соединить таблицы следующим образом:
1. Каждое видео будет хранить ссылку на пользователя, который добавил это видео (отношение один-ко-многим)
2. Каждое видео будет хранить массив пользователей, которые лайкнули это видео. А Каждый пользователь будет хранить массив всех лайкнутых этим пользователем видео. (отношение многие-ко-многим)
Для реализации такого подхода нам нужно изменить схемы моделей:
1. для реализации соединения один-ко-многим добавить поле owner в коллекцию Video
2. Для реализации соединения многие-ко-многим добавим в Коллекции такие вот поля:
User:
Video:
И теперь, чтобы данные в коллекциях были консистентны, добавим по такому коду в конец каждой модели:
User:
Video:
Этот код будет срабатывать, когда будет удален пользователь или видео - будут также удалены все ссылки на пользователя или видео в соответствующих коллекциях.