Я пытался понять встраивание в Mongodb, но не смог найти достаточно хорошей документации. Связывание не рекомендуется, так как записи не являются атомарными по документам, а также есть два поиска. Кто-нибудь знает, как это решить, или вы бы предложили мне перейти к графическим базам данных, таким как neo4j.
Я пытаюсь создать приложение, для которого потребуются отношения «многие ко многим». Чтобы объяснить, я возьму пример с библиотекой. Он может предлагать книги пользователю на основе книг, которые читают его друзья и соседи (единомышленники).
Есть Пользователи и Книги. Пользователи берут книги и имеют друзей, которые являются другими пользователями
- Учитывая пользователя, мне нужны все книги, которые он читает, и количество общих друзей для книги
- Учитывая книгу, мне нужны все люди, которые ее читают. Можно указать пользователя А, это вернет пересечение людей, читающих книгу, и друзей пользователя А. Это взаимная дружба.
Пользователи = [
{ name: 'xyz', 'id':'000000', friend_ids:['949583','958694']} { name: 'abc', 'id':'000001', friend_ids:['949582','111111']} ]
Книги = [
{'book':'da vinci code', 'author': 'dan brown', 'readers'=['949583', '000000']} {'book':'iCon', 'author': 'Young', 'readers'=['000000', '000001']} ]
Как видно выше, обычно мне нужно два документа, если я беру mongo DB, поскольку я мог бы выполнять двусторонний поиск. Дублирование (встраивание) одного документа в другой может привести к дублированию (эти схемы могут хранить гораздо больше информации, чем показано).
Правильно ли я моделирую свои данные? Можно ли это эффективно сделать в mongodb или мне следует посмотреть на граф dbs.