我正在尝试对Firestore数据库进行一些调整,但是由于某些原因,我的查询无法正常工作。我有很多地方。这是我的数据库:
places
- place_id
- name: Concert Hall
- image: https://www......
- capacity: 550
- location: center
我需要从地点节点(该地点的容量大于500)获得所有地点,并按位置(地点)排序。
这是我的代码:
val query = placesRef.whereGreaterThan("capacity", 500).orderBy("location");
任何帮助将不胜感激!
答案 0 :(得分:1)
Firestore只能在单个字段上订购。您的查询要求它在两个字段上排序:首先在capacity
上查找容量合适的地方,然后在location
上以正确的顺序返回结果。在Firestore中无法进行此类查询。
来自Firestore documentation comes this similar, invalid query:
无效:范围过滤器和不同字段的第一个
orderBy
citiesRef.where("population", ">", 100000).orderBy("country")
最好的选择是让查询在population
上进行过滤,然后对代码中country
上的结果进行排序。
要详细了解为什么Firestore不支持这种查询,请查看此video explaining the Firestore query model。剧透:这就是Firestore的性能保证。