哪种方法是在mongodb中存储嵌套数据的正确方法?

时间:2019-05-04 10:43:13

标签: mongodb mongoose

哪种方法是在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 }] }] ]

1 个答案:

答案 0 :(得分:1)

选项1最适合您的情况。

Mongodb的文档大小限制为16mb,在您的情况下,可能会有多个与单个子域关联的文章。因此,将所有这些文章嵌入单个文档中最终将填补该文档的限制。

此外,mongodb旨在对多个文档执行优化的查询,如果要嵌入的文档很多,那应该是您应该采用的设计方案。

此外,请参阅本文以了解架构设计的最佳实践 https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1