Я действительно новичок в 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.
Надеюсь, это имеет какой-то смысл для вас, и если да, то мне нужно знать:
- Прав ли я или нет, я думаю, что второй путь - это правильный путь?
- Как я могу использовать узел, чтобы прочитать эту «под коллекцию» как коллекцию, чтобы я мог применить курсор и использовать
find()
, sort()
, limit()
, skip()
и т. Д., На нем ...