Firestore按两个字段排序

时间:2017-11-19 20:33:31

标签: 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).  

我知道我可能需要按h1编制索引,但即便如此,我也不确定是否有办法做到这一点。

1 个答案:

答案 0 :(得分:4)

更新

我没有对此进行足够好的测试,以确定无法产生所需的排序。 OP asked the question again并获得了Firebase团队成员的回答:

  

因为Cloud Firestore不支持其他字段的排序   与提供的不平等相比,您无法按名称排序   直接来自查询。相反,您需要对客户端进行一次排序   你已经获取了数据。

API支持您想要的功能,但我没有在显示它的文档中看到示例。

查询字词的排序很重要。假设您有一组城市,感兴趣的字段是population(h1)和name(h2)。要获得人口在1000到2000范围内的城市,按名称排序,查询将是:

citiesRef.orderBy("population").orderBy("name").startAt(1000).endAt(2000)

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

  

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