了解 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: [...]
}]
但是,问题是……当我构建网页时,这种结构对我来说并没有多大用处。主页包含按类别分组的“事物”列表,列表......菜单......类似的东西。为了能够轻松地做到这一点,我需要有一些看起来更像的东西:
[
{'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 时,它不会返回相对较大的数据块,这些数据既慢又浪费,而是返回创建所需页面所需的最小值。