Firestore含OR过滤器的查询需多索引,手动创建后仍报错求助
Firestore OR查询索引问题解决指导
你的查询使用了Filter.orFilter包含两个条件,同时按dateAdded降序排序,这种场景下不需要包含x、y、dateAdded的复合索引,而是需要为OR中的每个条件分别创建对应的复合索引,具体步骤如下:
- 明确索引要求
Firestore的OR查询会拆分为两个独立子查询:
- 子查询1:
where x == "a" order by dateAdded desc - 子查询2:
where y == "a" order by dateAdded desc
每个子查询都需要自己的复合索引,两个索引缺一不可。
删除错误索引
先删掉你之前创建的包含x(升序)、y(升序)、dateAdded(降序)的索引,这个索引对当前查询无效。手动创建正确的复合索引
进入Firebase控制台的Firestore数据库页面,切换到「索引」标签页,依次创建两个索引:
- 第一个索引:
- 集合ID:
collectionId - 索引字段:
x(升序)、dateAdded(降序) - 查询范围:集合
- 集合ID:
- 第二个索引:
- 集合ID:
collectionId - 索引字段:
y(升序)、dateAdded(降序) - 查询范围:集合
- 集合ID:
- 等待索引生效
索引创建完成需要几分钟时间,待状态变为「已启用」后重新运行查询即可。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

