Монго БД - подколлекции? - PullRequest
3 голосов
/ 09 марта 2012

Я действительно новичок в MongoDb и использую его с nodeJS и собственным драйвером узла mongodb. У меня есть сомнения по поводу реализации. Я надеюсь, что вы можете помочь мне: У меня есть эта «схема», где db.pages содержит конфигурацию для каждого раздела моего сайта:

db.pages = [
   {name: 'contacts', settings:{...}},
   {name: 'blog', settings:{...}, posts: "blogPosts"},
   {name: 'media', settings: {...}, posts: "mediaPosts"}
]

db.blogPosts = [
  {title: 'post1', date: '2011-10-22', author:'me', content: '...'},
  {title: 'post2', date: '2011-11-22', author:'me', content: '...'},
  {...............................................................}
];

Что я делаю здесь, так это то, что на каждой странице я определяю, есть ли у меня коллекция сообщений, и в узле, когда я загружаю страницу, я проверяю, определено ли page.posts, и, если это так, загружаю соответствующую коллекция.

Может быть, я ошибаюсь, но это выглядит слишком реляционно, так что моя идея была бы поместите содержимое blogPosts непосредственно как значение для реквизита posts коллекции pages, например:

db.pages = [
       {name: 'contacts', settings:{...}},
       { name: 'blog', 
         settings:{...}, 
         posts: [
            {title: 'post1', date: '2011-10-22', author:'me', content: '...'},
            {title: 'post2', date: '2011-11-22', author:'me', content: '...'},
            {...............................................................}
         ]
       },
       {name: 'media', settings: {...}, posts: [...]}
    ]

Я действительно думаю, что в среде NoSQL это имеет гораздо больше смысла, но я могу ошибаться. Проблема, с которой я столкнулся, заключается в том, что при использовании последней конфигурации я не могу заставить nodejs рассматривать поле posts как коллекцию mongo.

Надеюсь, это имеет какой-то смысл для вас, и если да, то мне нужно знать:

  1. Прав ли я или нет, я думаю, что второй путь - это правильный путь?
  2. Как я могу использовать узел, чтобы прочитать эту «под коллекцию» как коллекцию, чтобы я мог применить курсор и использовать find(), sort(), limit(), skip() и т. Д., На нем ...

1 Ответ

6 голосов
/ 09 марта 2012

Первый подход лучше.Второй подход имеет несколько недостатков:

  1. Каждый документ имеет ограничение размера 16 МБ.Вы достигнете этого предела и не сможете добавлять больше сообщений в блоге
  2. Вы не можете запрашивать и извлекать отдельные записи блога с диска как все это в одном большом документе
  3. , если вы будете применять этот принцип, тогда вы поместите все комментарии также в тот же документ страниц, что еще больше усложнит его и потеряет большую гибкость
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...