Какой самый способ "mongo" для представления отношений "многие ко многим", которые имеют атрибуты?
Итак, например:
Введение
Таблицы MYSQL
people = > firstName, lastName, ...
Movies = > name, length ..
peopleMovies = > movieId, personId, language, role
Решение 1
Вставить людей в фильмы...?
В MongoDB я понимаю, что это хорошо для denormalize and embed, но я не хочу, чтобы embed люди в фильмы, это просто логически не имеет смысла. Потому что люди не обязательно должны принадлежать только к фильмам.
Решение 2
people и Movies будут две отдельные коллекции.
people = > embed [{movieId: 12, personId: 1, language: "English", role: "Main"} ...]
Movies = > embed [{movieId: 12, personId: 1, language: "English", role: "Main"} ...]
Проблема с этим решением заключается в том, что, когда мы хотим обновить человека role для конкретного movie, нам нужно запустить два запроса на обновление, чтобы обеспечить синхронизацию данных в обеих коллекциях.
Решение 3
Мы также можем сделать что-то гораздо более реляционное, и в итоге получим три коллекции
people = > firstName, lastName, ...
Movies = > name, length ..
Castings = > movieId, personId, language, role
Проблема заключается в том, что из-за отсутствия утверждения объединения в MongoDB требуется 3 queries перейти от людей → к фильмам и наоборот.
Вот мой вопрос, какие еще есть способы моделирования чего-то подобного в MongoDB и более NoSQL. С точки зрения предоставленных решений, какой из них будет лучшим с точки зрения производительности и согласия в манго.