Firestore的两个字段顺序

Blu*_*lue 6 firebase google-cloud-firestore

在firestore中,我想知道是否有一种方法来获取hueristic1并获取两个hueristic1值之间的所有数据,但根据hueristic2排序结果。

我问是因为两个页面底部的数据

https://firebase.google.com/docs/firestore/query-data/order-limit-data

https://firebase.google.com/docs/firestore/query-data/query-cursors

似乎有些矛盾的文档。

我想做的是

Ref.startAt(some h1 value).endAt(some second h1 value).orderBy(h2).  
Run Code Online (Sandbox Code Playgroud)

我知道我可能必须按h1进行索引,但是即使那样我也不确定是否有办法做到这一点。

Bob*_*der 6

更新:

我没有对此进行足够好的测试,以至于无法产生所需的排序。OP 再次问了这个问题,并从Firebase团队成员那里得到了答案:

由于Cloud Firestore不支持按与提供的不等式不同的字段进行排序,因此您将无法直接从查询中按名称进行排序。相反,获取数据后,您需要对客户端进行排序。


该API支持所需的功能,尽管我在显示它的文档中没有看到示例。

查询词的顺序很重要。假设您有一个城市集合,并且感兴趣的字段是population(h1)和name(h2)。要获得人口在1000到2000之间的城市(按名称排序),查询将是:

citiesRef.orderBy("population").orderBy("name").startAt(1000).endAt(2000)
Run Code Online (Sandbox Code Playgroud)

此查询需要一个复合索引,您可以在控制台中手动创建。或者,如文档所示,该系统将为您提供帮助:

无需手动定义复合索引,而是在应用程序代码中运行查询以获取用于生成所需索引的链接。