1
我真的是新來的MongoDb,並與nodeJS和本地節點mongodb驅動程序一起使用它。我對執行有懷疑。我希望你能幫助我: 我有這樣的「模式」,其中db.pages擁有的配置,我的網站的每個部分:Mongo DB - 子集合?
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
內容直接作爲pages
收集的道具posts
,像這樣的價值:
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()
等,它...
謝謝,我明白了第1點和第3點。我不知道你的第二點是否是我的第二個問題的答案。我仍然不知道,如果我可以將收藏的子收藏作爲第一級收藏。 – 2012-03-09 15:12:52
您可以使用find(),但sort(),limit(),skip()適用於文檔。例如,在第二種方法中,您不能選擇最新的5篇博文。你可以找到5頁有最新的博客文章,但將不得不在這5頁的所有博客文章。 – 2012-03-09 15:28:32
好吧,我幾乎明白了。只是最後一個問題:無論如何,在運行時,我可以:選擇一個頁面,將文章集合在文檔中? – 2012-03-09 15:33:24