讓我的頭繞着MongoDB文檔設計,並試圖找出如何做某事或如果我吠叫錯誤的樹。如何獲取不同的值列表,並且低於所有具有不同價值的文檔?
我正在創建一個迷你CMS。該網站將包含按類別分組的文檔或網址,即有一個名爲「商店」的組,其中包含指向另一網站上的項目的鏈接列表,並且存在一個名爲「藝術」的類別,該類別具有藝術作品列表,每一個都有一個幻燈片的標題,摘要和圖像。
所以,一個可能的方式做到這一點是有一個集合,它看起來像:
[{category: 'Products',
title: 'Thong',
href: 'http://www.thongs.com'
},{
category: 'Products',
title: 'Incredible Sulk',
href:'http://www.sulk.com'
},{
category: 'Art',
title: 'Cool art',
summary: 'This is a summary to display',
images: [...]
}]
但是,這裏的問題....當我建立的網頁這種結構ISN對我很有用處。主頁包含按其分類,列表...菜單分組的「東西」列表。爲了能夠輕鬆地做到這一點我需要的東西,看起來更像是:
[
{'Products':[
{title:'thong', href:'http://www.thongs.com'},
{title:'Incredible Sulk'}
]
},
{'Art':[
{title:'Cool art',summary:'This is a summary to display',images:[...]}
]
}
]
所以,問題是,我可以以某種方式做MondoDB這種轉變?如果我不能,那麼在我的應用服務器層做到這一點是不好的(我會得到一個獨特類別的分組列表,然後循環查詢Mongo查找該類別的文檔)?我猜應用服務器層是不好的,畢竟如果我幸運的話,mongodb會把它全部存儲在內存中。如果這兩種都不好,那麼我是否做得很錯,我是否應該將這種結構放在首位?
我需要讓用戶很容易地創建類別,並考慮如果他們開始添加大量文檔會發生什麼,並且我要麼限制爲每個類別拉回多少文檔,要麼限制字段返回,以便當我查詢mongodb時,它不會返回一個相對較大的數據塊,這是很慢且浪費的,但是返回的是我需要創建所需頁面的最小值。