MongoDB中的规范化

MongoDB中的规范化,mongodb,database-schema,Mongodb,Database Schema,我有一个这样的文档结构 项目: 虽然MongoDB通常不鼓励规范化,但我担心如果我不规范化,是否会出现数据完整性问题。 我期望在这个应用程序中有数十万条记录(可能有数百万条) 这个模式是更好的选择吗 类别: categoryID categoryName 子类别: subCategoryID subCategoryName, 项目: 这完全取决于最终用户将如何与您的应用程序交互 根据您迄今为止的评论,我了解到您的查询很可能属于以下类别之一: 带上X类的所有物品 从子类别X中取出所有项目 携

我有一个这样的文档结构

项目:

虽然MongoDB通常不鼓励规范化,但我担心如果我不规范化,是否会出现数据完整性问题。 我期望在这个应用程序中有数十万条记录(可能有数百万条)

这个模式是更好的选择吗

类别:

categoryID
categoryName
子类别:

subCategoryID
subCategoryName,
项目:


这完全取决于最终用户将如何与您的应用程序交互

根据您迄今为止的评论,我了解到您的查询很可能属于以下类别之一:

  • 带上X类的所有物品
  • 从子类别X中取出所有项目
  • 携带属于X类别和Y子类别的所有项目
如果是这样,我认为最好只使用一个集合来存储数据,因为您的结构没有那么复杂,也不存在复杂的多对多关系

如正式文件所述:

通常,使用规范化数据模型:

嵌入时会导致数据重复,但不会 提供足够的读取性能优势,以超过 重复的影响

表示更复杂的多对多关系

为大型分层数据集建模


关于性能,我认为最好创建适合您的查询模式的索引,并从一个集合中获取数据,而不必查询多个集合。

这太宽泛了。这里已经写了很多关于模式设计的文章,对模式设计的深入讨论需要比您发布的内容更多的关于查询、问题域和集合基数的知识;选择不同的子类别,其中类别=$,从类别=?&的项目中选择*子类别=?;关于基数,我希望数据像20个类别,50个子类别有100000条记录。
subCategoryID
subCategoryName,
objectID
itemDesc
categoryID
subCategoryID
price
flavor
itemDesc