Есть несколько способов создать схему для этой цели.Одна из важных вещей, которую нужно спросить, заключается в следующем: если Том говорит, что Гэвин - коллега, означает ли это, что Гэвин также покажет Тома как коллегу?
Да : Если Том или Гэвин могутсоздайте связь между ними, и в любом случае это одна и та же ссылка (независимо от процесса создания этой ссылки), тогда то, о чем вы на самом деле говорите, это отношения.Mongo является базой данных NoSql и не выполняет объединений, поэтому вам придется управлять этими отношениями с помощью нескольких запросов выбора и обновления.Том мог вести список сотрудников, а Гэвин мог вести список сотрудников, и каждый раз, когда один из них добавляет другой, оба документа должны будут обновляться.Честно говоря, такого рода отношения - это то, в чем хороши реляционные базы данных.Mongo, вероятно, не лучшее решение.
Нет : Если Том может определить, является ли Гэвин коллегой, независимо от того, что думает Гэвин, тогда вы должны хранить массив коллег у своего пользователя.коллекция.То же самое касается одноклассников.Каждый пользовательский документ должен иметь поле имени, поле сотрудника, поле одноклассников и т. Д. Чтобы получить информацию Тома, вам нужно всего лишь извлечь один документ из одной коллекции, и у вас есть все.
Сохранить вИмейте в виду, что отслеживание отношений между документами не является сильной стороной Монго.Если у вас много отношений с относительно небольшими документами, Mongo на самом деле не лучший выбор.
Нет ничего плохого в том, чтобы использовать mySql для управления пользователями и отношениями, сохраняя при этом журналы активности, комментарии, посты.и т. д. в Монго.