例如,我有一个1.000.000用户的列表,数据如下所示:
users: {
$userId: {
name: "",
sex: "",
age: "",
city: "",
maritalStatus: "",
// can be more
}
}
我希望过滤,分页以下数据:单身,男性,年龄<&lt;的用户30,住在X市。
是否有一种很好的做法可以减少这类查询的痛苦?
答案 0 :(得分:2)
Firebase没有直接查询多个孩子的方法。
您可以构建数据以使其更容易 - 例如
users
$userId
gender_age: male_27
$userId
gender_age: male_32
然后,查询30到40之间的男性:
gender_age....queryStartingAtValue("male_30").endingAtValue("male_40")
这将缩小结果范围 - 然后您可以在代码中过滤所需的内容,例如(概念)
if snapshot.child("maritalStatus") = "Single" and
snapshot.child("city") = "AnyTown" then
//add person to list for display
您可以稍微扩展一下以进一步缩小结果范围:
users
$userId
city_gender_age: anytown_male_27
city_gender_age....queryStartingAtValue("anytown_male_30").endingAtValue("anytown_male_40")
不幸的是,如果查询不太具体,模式就会崩溃;例如如果我们在30到40岁之间的任何一个城市询问男性或女性,这都不会起作用。
然而,磁盘空间很便宜,因此存储重复的内容。另一个节点中的数据将解决该问题
another_node
$user_id
city_age: anytown_27