Firestore 索引限制

Firestore index limitation

来自 documentation Firestore 具有以下限制:

我很难理解文档中 "document" 的含义。它们指的是单个文档,还是特定集合的整套文档?

例如,假设我有一个包含 10,000 个文档的集合,每个文档包含相同的 2 个字段:

Document: `students/00001`
  name: "Jeff"
  age: 32

Document: `students/00002`
  name: "Mary"
  age: 28

...

Document: `students/10000`
  name: "Anne"
  age: 45

根据文档,Firestore 将按升序为每个字段创建一个索引,并按降序为每个字段创建一个索引。因此,我们将为每个文档创建 4 个索引,并且对于整个文档集合只有这 4 个相同的索引,因为它们都具有相同的字段。

一切顺利

但是,现在假设我有一个集合,其中也包含 10,000 个文档,但每个文档包含 2 个字段,它们总是彼此不同:

Document: `students/00001`
  B2DcG6g9w: true
  YwY3g642D: true

Document: `students/00002`
  A3h7k3e6B: true
  w2Fh0j1g8: true

...

Document: `students/10000`
  8n4545f7k: true
  j2hle4oOp: true

Firestore会按升序为每个字段创建一个索引,并按降序为每个字段再创建一个索引。因此,我们将 每个文档只有 4 个索引 。但是由于这些索引对于每个文档都是不同的,我们将有一个 集合中所有文档的总共 40,000 个索引

问题:我是否达到了 40,000 个索引限制?这个限制真的是文档限制还是集合限制?

集合中的文档数量与规定的限制无关。缺少字段的文档不会有该字段的索引。 (Firestore 不会为不存在的东西编制索引。)您可以 remove indexes 以节省 space 和金钱。

为集合中索引的每个字段或字段组合创建了一个索引。每个文档可以出现在 40.000 个这样的索引中。