Я просмотрел большинство статей по дизайну схемы mongodb на веб-сайте mongo и большинство вопросов здесь, на SO. Есть еще один вариант использования, который я не понял. При просмотре этих руководств они обычно ссылаются на проблему с комментариями к статье и на проблему с продуктами / категориями. Я хочу выяснить, как смоделировать отношение «один ко многим» (автор к сообщениям) при запросе списка сообщений. Вот примеры схем:
Users: {
_id: ObjectID
Name: String
Email: String
}
Posts: {
_id: ObjectID
user_id: ObjectID
body: String
comments: [
body: String
]
}
Теперь предположим, что вы хотите выполнить запрос для последних 10 сообщений. Довольно простой запрос, но теперь у вас есть сообщения, каждый из которых может иметь уникальный ObjectID, указывающий на пользователя. Теперь, как вы должны получить имя и адрес электронной почты каждого пользователя для сообщения.
Если вы создадите массив идентификаторов объектов пользователя из запроса сообщений, а затем выполните запрос db.users.find ({_id: {$ in: PostsUserIDArray}}); После этого вы бы использовали логику своего приложения, чтобы сопоставить правильную информацию о пользователе с правильным сообщением?
Следует ли вам хранить копию данных в сообщениях. I.E. сохраните идентификатор пользователя, имя и адрес электронной почты в таблице сообщений. Тогда просто ловите крючок, когда пользователь обновляет эту информацию, чтобы обновить всю информацию в сообщениях.
Вариант, о котором я или мой друг не думали.
Я ценю любую помощь, поскольку я пытаюсь обернуть голову вокруг mongo моделирование данных.