如何在 Firestore 子文档上创建索引豁免?

Tho*_*mas 4 google-cloud-firestore

我们有一个数据库结构如下:

  • 收藏 foo
    • 文件
      • 收藏 bar
        • 包含多个字段的文档(接近 1 MB 的限制)

尝试将文档写入bar包含 34571 个字段的集合,我得到(来自 Go API):

rpc 错误:代码 = InvalidArgument desc = 实体的内置索引条目过多

好吧,好吧,看来我需要添加一个豁免:

大型数组或地图字段

大型数组或地图字段可以接近每个文档 20,000 个索引条目的限制。如果您不是基于大型数组或地图字段进行查询,则应将其从索引中排除。

但是如何?控制台只允许我设置单个集合名称和单个字段路径,并且不接受斜杠:

“添加豁免”对话框

我尝试了其他组合,但/Collection ID或 中都不被接受Field path,并且使用.,虽然没有明确禁止,但在尝试保存豁免时会导致一般错误。我也不确定是否*允许。

Jua*_*ara 6

索引豁免基于集合 ID 而不是集合路径。在这种情况下,您可以输入bar集合 ID。这也意味着豁免适用于所有具有 ID 的集合bar,无论层次结构如何。

对于字段,您只能为每个豁免指定一个字段路径。不支持“*”全选择器。有200 个索引豁免限制,因此您无法豁免所有 34571 个字段。如果可能,我建议将您的字段移动到地图中。然后您可以禁用地图字段上的索引。

  • 这听起来像是一个严重的限制:( (2认同)