2012-01-14 3 views
0

Моя база данных имеет коллекцию пользователей, каждый пользователь имеет несколько документов, каждый документ имеет несколько секций каждая секция имеет несколько работMongoDB структура документа

Пользователи работают с коллекцией работ очень часто (добавить новую работу, обновление работает, удалить работы). Итак, мой вопрос в том, какую структуру коллекций я должен сделать? коллекцию работ составляет 100-200 записей за раздел.

Должен ли я создавать коллекцию работ для всех пользователей с помощью пользователя _id или есть лучшее решение?

ответ

2

Зависит от того, какие у вас есть вопросы. Директива состоит в том, чтобы организовать документы, чтобы вы могли получить все, что вам нужно, в идеале один запрос.

С другой стороны, то, что вы, вероятно, хотите избежать, заключается в том, чтобы переделать документы из mongo, поскольку места для обновления на месте недостаточно. Вы можете сделать это, предварительно распределив достаточное пространство или извлекая эту часто меняющуюся часть в свою собственную коллекцию.

+0

вы можете достичь этого с помощью нескольких различных структур документов, но некоторые из них будут лучше соответствовать вашему варианту использования. вот что я пытался сказать. – milan

+0

сложно, потому что у меня недостаточно информации. вы можете начать так и развиваться, пока обнаружите, что что-то не работает. для начала я бы, вероятно, извлек раздел в отдельную коллекцию. – milan

+0

, когда вы извлекаете данные учетной записи пользователя, обычно ли вы хотите видеть все его разделы и работать? просто пройти процесс регистрации? возможно нет. это одна из причин. конечно, вы просто вытаскиваете несколько полей не для всех разделов. но он также имеет смысл по областям. вы даже говорите о разделах как о «документах», над которыми работают пользователи. – milan

0

Как вы можете прочитать в MongoDB документы,

Вообще, для «содержит» отношения между сущностями, вложение должно быть выбрано. Использовать ссылку, если не использовать ссылку, приведет к дублированию данных.

Так что, если каждый пользователь имеет доступ только к своим документам, я думаю, что вы в порядке. Просто имейте в виду, что есть ограничение по размеру (16 МБ, я думаю) для документов, о которых вы должны быть осторожны, поскольку вы внедряете множество вещей.

+0

Я не думаю, что вложение документов в пользователя - хорошая идея, если это то, что вы предлагаете, даже если у пользователя есть доступ к их документам. Помимо всего прочего, они концептуально разделяют сущности. – Russell

Смежные вопросы