Отличный вопрос.Позвольте мне сначала немного рассказать о том, как работает отношение N: N, а затем я подробно расскажу о каждой из ваших точек маркера.
N: N в MySQL, как правило, ваша сводная таблица связана между вашим пользователем иинтересы (таблица user_interests).В монго вы делаете это немного по-другому.У вас по-прежнему есть коллекция пользователей и интересов, однако вместо этого теперь вы храните список ключей под интересами для пользователя.ТАК что-то вроде этого:
User Collection {
"name":"Josh",
"user":"jsmith",
"interests":[
{
"_id":12345,
"rating":"like"
},
{..}..
]
}
Сохраняя ваши интересы в списке, который отключен на вашей таблице интересов, вы можете выполнять каждое из необходимых вам действий.Если вы хотите сделать запрос, вы бы выбрали его на основе идентификатора, который находится в таблице интересов, а затем выполните запрос, используя модификатор $ in .
Теперь для вашей коллекции интересов ясделал бы следующее:
User Interest {
"_id":objectId
"label":"Swimming",
"count":intValue
}
При добавлении интереса к документу пользователя переменная count будет зависеть от определения ваших рейтингов.Если вы храните свои рейтинги в отдельной области (или в логике), то назначенное им значение будет тем, что вы соотносите с интересующим значением int.IE: пользователь оценивает его meh (который имеет значение 1), затем вы добавляете 1 к значению счета.
Надеюсь, это полезно и, по крайней мере, привело к некоторым другим идеям о том, как его структурировать.!
Удачи, помните, МОНГО УДИВИТЕЛЬНЫЙ.