【问题标题】:How to create an index exemption on Firestore subdocuments?如何在 Firestore 子文档上创建索引豁免?
【发布时间】:2019-02-27 16:03:39
【问题描述】:

我们的数据库结构如下:

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

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

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

好的,好的,it seems我需要添加豁免:

大型数组或映射字段

大型数组或映射字段可能会接近每个文档 20,000 个索引条目的限制。如果您不是基于大型数组或映射字段进行查询,则应将其排除在索引之外。

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

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

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

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

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

    【讨论】:

    • 这听起来像是一个严重的限制:(
    猜你喜欢
    • 2019-07-03
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2020-05-27
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多