为什么Firestore无法与多个字段范围过滤器一起使用?

时间:2019-07-02 17:17:10

标签: google-cloud-firestore

为什么Firestore无法与多个字段范围过滤器一起使用?

我也想知道为什么我不能进行全文搜索。

算法有原因吗?

我想知道原因。

1 个答案:

答案 0 :(得分:1)

Firestore具有非常独特的性能保证:检索数据所需的时间仅取决于您检索的数据量,而不取决于您从中检索数据的量。因此,无论集合中有成千,一百万或十亿个文档,检索其中十个文档都将花费相同的时间。

为了能够保证这种性能,Firestore具有一组有限的(主要是查询)功能。例如:Firestore仅支持可以跳转到索引中正确起点的查询,并从该起点一直流到查询结束的结果。这使它无法支持诸如以下的内容:

  • OR查询,因为那些查询将需要跳过索引,这将无法保证性能。请注意,我们正在努力支持可能的IN查询的子集,以便您可以查询“给我所有提供泰国或意大利美食的餐厅”之类的信息。
  • 查询文本的子字符串。 Firestore仅支持所谓的前缀查询,因此值开头的是子字符串,而值包含的是子字符串。因此,您可以搜索“给我所有以'zla'开头的名称”,而不是“给我所有包含'lat'的名称”。
  • 在多个范围内进行查询,因为它们也可能无法保证性能。

有关此内容的另一个很好的解释,请参见Getting to know Cloud Firestore episode on queries