firestore数组结构索引限制

时间:2017-12-04 01:26:06

标签: firebase google-cloud-firestore

在firestore文档中,有以下描述

  

索引限制 - 单个文档中只能包含20,000个属性   为了使用Cloud Firestore内置索引。如果您的数组类似数据   结构增长到成千上万的成员,你可能会碰到这个   限制。

https://cloud.google.com/firestore/docs/solutions/arrays

我想知道如何解释说明。 两种模式中哪一种符合限制?

<pattern 1: categories in one document above 20,000> 
    doc1
     - id:111  
     - categories: {aaaa:true, aaab:false, aaac:true, aaad: false, aaae:true, aaaf:true, aaag:true, aaah:true, aaai:true, aaaj:true, ,,,,,,,,,,, }

另一种模式

<pattern 2:  categories in one document is a few but as a collection of document number of categories above 20,000> 
    doc_1
    - id:111
    categories{aaaa:true, aaab:false, aaac:true, only several element}
    doc_2
    - id:111
    categories{aaad:true, aaae:false, aaaf:true, only several element}
    doc_3
    - id:111
    categories{aaag:true, aaah:false, aaai:true, only several element}

我相信模式1达到极限,但模式2是否达到极限?

1 个答案:

答案 0 :(得分:2)

限制在属性数量上,因此两种模式都可能达到20,000限制。

以下是计算可能有用的属性的一些示例:

本文档包含两个属性:ab.c

{
  a: "foo",
  b: {
   c: "bar"
  }
}

本文档包含四个属性:abb.cd

{
  a: "foo",
  b: {
   c: "bar",
  },
  d: ["quz", "qaz"]
}

这个文件也有四个:

{
  a: "foo",
  b: {
   c: "bar",
  },
  d: ["quz", "qaz", "apple", "banana"]
}

本文件有五个:

{
  a: "foo",
  b: {
   c: "bar",
  },
  d: ["quz", "qaz"],
  e: ["apple", "banana"]
}

所以它不是关于任何单个数组的长度或嵌套事物的深度,而是关于可查询值的总数。

编辑03/05/18 :之前当我说数组成员分别对索引进行计数时,我错了。他们没有,这是我们在Firestore处于Alpha状态时从未在公开发布中应用的东西。