Firestore 索引限制
Firestore index limitation
来自 documentation Firestore 具有以下限制:
每个文档的最大索引条目数:40,000
文档索引条目大小的最大总和:8 MiB
我很难理解文档中 "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 个这样的索引中。
来自 documentation Firestore 具有以下限制:
每个文档的最大索引条目数:40,000
文档索引条目大小的最大总和:8 MiB
我很难理解文档中 "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 个这样的索引中。