Firestore REST API双字段排序复合查询实现及索引问题咨询
Firestore REST API 多字段排序问题解答
1. 双字段排序实现方式
调用文档列表查询接口时,通过orderBy请求参数即可配置多字段排序规则:
- 多个排序字段之间用英文逗号分隔,字段书写顺序就是排序优先级:排在前面的字段作为第一排序维度,字段值相同的文档才会按后续字段排序
- 排序方向默认是升序,若需要某字段按降序排列,直接在对应字段名后加
desc即可
针对学生文档排序场景,如果要先按student school ID升序、再按student average score降序排列,直接给orderBy参数传以下值即可:
student school ID,student average score desc
如果两个字段都要升序,直接传student school ID,student average score就行。
2. 复合索引相关说明
所有涉及2个及以上字段排序的查询,必须提前创建匹配的复合索引才能正常执行。
和SDK调用的体验差异:使用官方客户端SDK发起查询时,如果缺少对应复合索引,返回的报错信息会自带一键生成索引的跳转链接,点击后跳转到控制台确认配置即可自动完成索引创建。但直接调用REST API时,报错信息不会携带这个快捷链接,你需要手动进入Firebase控制台的Firestore索引管理页面,按照查询里的字段顺序、排序方向添加对应复合索引,等索引构建完成后查询就能正常返回结果。
注意:复合索引的字段顺序、每个字段的排序方向必须和你查询时
orderBy里写的配置完全一致,否则依然会报索引缺失错误。
内容的提问来源于stack exchange,提问作者Ninja Dev
相关产品推荐
相关产品推荐

