让我的头绕着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时,它不会返回一个相对较大的数据块,这是很慢且浪费的,但是返回的是我需要创建所需页面的最小值。