Firebase 使用GeoFire和where执行查询

Firebase 使用GeoFire和where执行查询,firebase,flutter,google-cloud-firestore,geolocation,Firebase,Flutter,Google Cloud Firestore,Geolocation,在我的“办公室”收藏中,我使用GeoFlatterFire软件包试图查询x年到y年之间建造的所有办公室,这些办公室提供特定的服务,距离我的办公室z英里以内。每个“office”文档都有一个带有geohash和GeoFirePoint的geopoint的“位置”地图,以及一个“建成年份”和一个“服务”字段。我喜欢执行如下查询,获取文档并显示它们: var collRef = firestore.collection('offices') .where('service'

在我的“办公室”收藏中,我使用GeoFlatterFire软件包试图查询x年到y年之间建造的所有办公室,这些办公室提供特定的服务,距离我的办公室z英里以内。每个“office”文档都有一个带有geohash和GeoFirePoint的geopoint的“位置”地图,以及一个“建成年份”和一个“服务”字段。我喜欢执行如下查询,获取文档并显示它们:

var collRef = firestore.collection('offices')
              .where('service', isEqualTo: 'law')
              .where('built', isLessThanOrEqualTo: y)
              .where('built', isGreaterThanOrEqualTo: x);

geo.collection(collectionRef: collRef.reference())
                .within(center: myOffice, radius: z, field: 'position', strictMode: true);
但这是行不通的。我得到一个错误,该查询无效:

Unhandled Exception: PlatformException(invalid_query, FIRInvalidArgumentException, Invalid query. You have a where filter with an inequality (lessThan, lessThanOrEqual, greaterThan, or greaterThanOrEqual) on field 'built' and so you must also use 'built' as your first queryOrderedBy field, but your first queryOrderedBy is currently on field 'position.geohash' instead.)
我知道我们不能对Firebase中的多个字段执行不等式,因为索引就是这样工作的,我猜GeoFire会基于geohash进行内部排序,但我正试图避免客户端查询,以尽可能避免不必要的文档读取,所以我需要在这里合并所有查询

如果我在这里进行位置查询,然后在客户端进行构建年,我将阅读大量不必要的文档。这同样适用于另一种情况(基于构建年份进行查询,并在客户端处理位置)。有办法解决这个问题吗