哪种方法是在mongodb中存储嵌套数据的正确方法?
我有文章应用程序,每个文章都属于子域,每个子域都属于域。
我的网站看起来像这样:
/home -> list all domains
/home/domain -> list all subdomains
/home/domain/subdomain -> list all my articles
/home/domain/subdomain/article -> show the article details
在mongodb中,哪个结构遵循最佳实践?
选项1
创建每个集合并使用ref对象ID在它们之间链接
domains (collection) [{ name }]
subdomains (collection) [{ name, domain }]
articles (collection) [{ name, subdomain }]
选项2
创建一个文章集合(我认为是我的主要模型),并且在内部具有子域
articles (collection) [{ name, domain: { name, subdomain: { name } } }]
选项3
通过在内部创建域集合,我将拥有子域,而在内部(子域)中,我将拥有属于该子域的文章。
domains (collection) [{ name, subdomain: [{ name, articles: [{ name }] }] ]
答案 0 :(得分:1)
选项1最适合您的情况。
Mongodb的文档大小限制为16mb,在您的情况下,可能会有多个与单个子域关联的文章。因此,将所有这些文章嵌入单个文档中最终将填补该文档的限制。
此外,mongodb旨在对多个文档执行优化的查询,如果要嵌入的文档很多,那应该是您应该采用的设计方案。
此外,请参阅本文以了解架构设计的最佳实践 https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1