如何仅从Firestore数据库获取特定位置?

时间:2018-07-31 09:09:10

标签: kotlin google-cloud-firestore

我正在尝试对Firestore数据库进行一些调整,但是由于某些原因,我的查询无法正常工作。我有很多地方。这是我的数据库:

places
  - place_id
       - name: Concert Hall
       - image: https://www......
       - capacity: 550
       - location: center

我需要从地点节点(该地点的容量大于500)获得所有地点,并按位置(地点)排序。

这是我的代码:

val query = placesRef.whereGreaterThan("capacity", 500).orderBy("location");

任何帮助将不胜感激!

1 个答案:

答案 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的性能保证。