Как спроектировать схема для модели автор / пользователь в mongodb

Я просмотрел большинство статей по дизайну схемы mongodb на веб-сайте mongo и большинство вопросов здесь, на SO. Есть еще один вариант использования, который я не понял. При просмотре этих руководств они обычно ссылаются на проблему с комментариями к статье и на проблему с продуктами / категориями. Я хочу выяснить, как смоделировать отношение «один ко многим» (автор к сообщениям) при запросе списка сообщений. Вот примеры схем:

Users: {
    _id: ObjectID
    Name: String
    Email: String
}

Posts: {
    _id: ObjectID
    user_id: ObjectID
    body: String
    comments: [
        body: String
    ]
}

Теперь предположим, что вы хотите выполнить запрос для последних 10 сообщений. Довольно простой запрос, но теперь у вас есть сообщения, каждый из которых может иметь уникальный ObjectID, указывающий на пользователя. Теперь, как вы должны получить имя и адрес электронной почты каждого пользователя для сообщения.

  1. Если вы создадите массив идентификаторов объектов пользователя из запроса сообщений, а затем выполните запрос db.users.find ({_id: {$ in: PostsUserIDArray}}); После этого вы бы использовали логику своего приложения, чтобы сопоставить правильную информацию о пользователе с правильным сообщением?

  2. Следует ли вам хранить копию данных в сообщениях. I.E. сохраните идентификатор пользователя, имя и адрес электронной почты в таблице сообщений. Тогда просто ловите крючок, когда пользователь обновляет эту информацию, чтобы обновить всю информацию в сообщениях.

  3. Вариант, о котором я или мой друг не думали.

Я ценю любую помощь, поскольку я пытаюсь обернуть голову вокруг mongo моделирование данных.

7
задан rickharrison 7 August 2011 в 19:05
поделиться