Firestore 数据建模文章和类别

Firestore datamodelling articles and categories

上下文:

我正在 Angular 中创建一个类似 wiki 的页面。维基页面的文章总数可能不会超过 5000 篇。 我想获得最有效的(页面加载)方式,但我认为我对此太陌生了,无法监督一个选项对另一个选项的影响。当然我也愿意循规蹈矩

问题:

我在 firestore 中有一些文章要分类。一篇文章应该属于一个类别。一个类别可以属于一个类别(作为子类别)。

现在,首选哪种数据模型?为什么?

  1. 每篇文章都有一个引用类别文档的属性(引用数据类型)?

  2. 类别文档中包含对文章的引用数组?

Firestore-root
   |
   --- categories (collection)
         |
         --- categoryId (document)
               |
               --- name: "Science" //Simple property
               |

               --- articles ['articleId1', 'articleId2', etc.. (long array)]

  1. 完全不同的东西?
  1. Every article having an attribute (of reference datatype) referring to the category document?

只有当一​​篇文章可以属于一个类别时,这种结构才有用。

Firestore-root
   |
   --- articles (collection)
         |
         --- articleId (document)
               |
               --- catoegory: "Science" //Simple property

不需要使用对类别文档的引用。除此之外,要过滤您的文章,您可以简单地使用 where equal 调用。

  1. The category documents having an array of references to the articles?

如果一篇文章可以属于一个或多个类别,此结构将对您有所帮助。

Firestore-root
   |
   --- articles (collection)
         |
         --- articleId (document)
               |
               --- catoegories: ["Science", "Economy"] //Property of type array

现在要过滤您的文章,您只需使用 where array-contains 调用即可。

  1. Something completely different?

这两种解决方案在构建 Cloud Firestore 数据库时都被广泛使用,但您应该选择哪一种更适合您应用的use-case。