Монго с использованием коллекции - PullRequest
8 голосов
/ 17 октября 2011

Есть ли смысл в использовании подколлекций (около 15) для каждого пользователя? Количество пользователей около 10к. Количество записей в подколлекциях может достигать 2М. Или, может быть, я должен использовать общую большую коллекцию? Спасибо за ваши ответы.

1 Ответ

9 голосов
/ 17 октября 2011

Встроенные коллекции упрощают работу базы данных (сокращают количество коллекций) и ускоряют работу базы данных. Я обычно пытаюсь встроить все, и только если я не могу, я создаю отдельные коллекции. Если ваша встроенная коллекция будет большой, вы можете исключить ее из пользователя во время загрузки:

db.posts.find( { tags : 'tennis' }, { comments : 0 } );

Над запросом будут загружаться сообщения без комментариев. Документация

Но встроенные коллекции также добавляют сложности. Например, ваш mongodb не может отсортировать встроенную коллекцию для вас. Заказ всегда по умолчанию. Но вы можете сделать это на стороне клиента. Если для вас работает порядок по умолчанию, вы можете просмотреть вложенную коллекцию на странице через $ slice:

db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10

Также взгляните на этот документ о дизайне схемы.

Так что + 1 к встраиванию, когда это возможно.

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