Дублирование данных здесь неизбежно? - PullRequest
0 голосов
/ 27 апреля 2011

В основном у меня есть список постов, и мне интересно, нужна ли мне отдельная коллекция ссылок на эти посты.Конечно, я хочу показать название поста в своем сокращенном списке (и при наведении указателя мыши на содержимое), но запрос имени и содержимого поста также загрузит все комментарии, верно?(потому что они встроены. Ожидается, что массив комментариев будет значительно больше, чем пост 'Содержание')

Есть ли способ избежать получения другой коллекции, но в то же время избегать загрузки комментариев каждый раз, когда яхотите узнать название / описание поста?

> db.Posts.find()
{ 
  "_id" : "123",
  "Name": "test",
  "Content": "wooops", 
  "comments" : [ {comment1}, {comment2}, {comment3} ]
}

Конечно, я знаю, что могу просто создать еще одну коллекцию для комментариев.Но, насколько я могу судить, это не будет возможно в производственном использовании, потому что я ожидаю, что у меня будет много постов каждый день, что означает, что каждое новое сообщение будет создавать новую коллекцию комментариев.Это рекомендуется?Насколько официальные документы говорят, что максимальный номер коллекции составляет 12000. Несмотря на то, что это говорит о том, что число может быть увеличено, у меня возникает сильное ощущение, что это не будет хорошей идеей.редактировать: я рассчитал, абсолютный максимум составляет 1,5 миллиона коллекций / = сообщений.Этого, конечно, недостаточно.

Любой опыт по этому вопросу будет принята с благодарностью:)

1 Ответ

1 голос
/ 27 апреля 2011

, но при запросе имени и содержимого сообщения все комментарии тоже будут загружены?

Не обязательно.MongoDB позволяет вам загружать частичные документы (аналогично проекции в SQL, где вы выбираете только некоторые поля). Для этого вы добавляете второй аргумент к запросу find (), предоставляя документ со списком возвращаемых элементов:

> db.Posts.find({}, {Name:true, Content:true})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...