Вопрос:
Скажем, мне нужно хранить в mongoDB некоторые данные (например, “состояние”), относящиеся к определенной учетной записи пользователя.
Каков наилучший вариант для этого: Состояние коллекции:
1) {id: – это будет то же самое в коллекции Users, [state data]}
2) {id: – некоторый уникальный идентификатор для состояния, userId – id из коллекции пользователя, [данные состояния]}
Итак, что было бы лучшим дизайнерским решением?
Лучший ответ:
Все зависит от того, как вы будете получать доступ к своим данным для своего приложения. Если каждый раз, когда вам нужно получить доступ к состоянию, вы будете получать данные пользователя в любом случае, имеет смысл хранить его в коллекции пользователей.
Подумайте о блогах и их комментариях, вам никогда не нужно будет получать комментарии только сами по себе, вы всегда получаете запись в блоге и связанные с ней комментарии.
EDIT: Некоторые соображения:
-
Если эти списки, о которых вы говорите, не зависят друг от друга, и между списками каждого пользователя не должно быть ссылочной интеграции, тогда имеет смысл хранить их в коллекции пользователей
-
Если вы считаете, что документ пользователя будет больше 16 МБ (текущий максимальный размер документа), вам может потребоваться разделить коллекции (т.е. Не хранить все данные в одном месте, сбор пользователей)