【发布时间】:2022-06-30 15:57:42
【问题描述】:
如何根据年龄范围和位置查询我的 Firestore 数据库。
例如,假设我想获取年龄在 18 到 30 岁之间且距离我 5 英里以内的所有用户。
这是我当前数据库结构的简化版本。
users
uid_0
age: 21
uid_1
age: 24
要按年龄参数过滤,我知道我可以这样做:
// Swift
db.collection("users")
.whereField("age", isGreaterThanOrEqualTo: 18)
.whereField("age", isLessThanOrEqualTo: 30)
对于位置,我读过geofire可以使用,这会添加一个额外的节点,例如:
_geofire
uid_0:
g: "asdaseeefef"
l:
0: 52.2101515118818
1: -0.3215188181881
uid_1:
g: "oposooksok"
l:
0: 50.1234567898788
1: -0.8789999595988
但我不确定如何在我原来的性别+年龄查询之上添加位置查询(我不确定如何单独进行位置查询)。但关于将两者结合起来,我主要担心的是 Firestore 文档指定您只能在一个字段上应用范围过滤器,而我已经为 age 字段应用了一个。
是否可以按位置过滤同时按年龄范围过滤?
我还查看了 Firestore 的 geo queries,它看起来有些有希望,但理解起来却相当混乱,所以我不确定这是否会有同样的限制。
【问题讨论】:
-
地理查询不使用任何 where 语句,因为
geofire已经为您提供了您需要查找的所有地理哈希,所以我会说您可以将它们组合起来.
标签: swift firebase google-cloud-firestore