【问题标题】:Why does firestore not work with multiple field range filters?为什么 Firestore 不适用于多个字段范围过滤器?
【发布时间】:2019-07-02 17:17:10
【问题描述】:

为什么 firestore 不能与多个字段范围过滤器一起使用?

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

算法有原因吗?

我想知道原因。

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

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

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

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

    有关此问题的另一个很好的解释,请参阅Getting to know Cloud Firestoreepisode on queries

    【讨论】:

    • 感谢您的回答! firestore 是否使用 B + Tree 算法?我认为多列范围规范和全文搜索(%xxx%)查询类似于Index不起作用的特性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2018-09-19
    相关资源
    最近更新 更多