Firebase数据库 - 如何执行前缀通配符查询

时间:2017-07-12 10:02:37

标签: android objective-c swift firebase firebase-realtime-database

我想在Firebase数据库上执行通配符查询, 并且不知道图书馆是否支持这一点。 - (我猜它没有。)

我想要一个网络流量尽可能少的最佳解决方案,假设数据集是数百万条记录。

数据集(使用前缀通配符):

user_id:
         id_001123:      
                   name: "java"
         id_002124:
                   name: "objective-c"
         id_003125:
                   name: "swift"

代码如何使用通配符检索记录id_002124名称字段,您只有一部分ID。例如。 “%124”。

预期结果为id_002124,名称为“objective-c”

任何移动语言示例代码都很棒。 (目标C /夫特/爪哇)

1 个答案:

答案 0 :(得分:7)

Firebase数据库查询可以根据对象的键(例如id_001123),它们的值(在您的情况下不适用)或子属性的值(例如{{ {1}} = name)。

对于每个Firebase,可以匹配具有您指定的特定值的项目,以您指定的值开头的项目,或以您指定的值结束的项目。

因此,您可以创建一个与名为"java"的项匹配的查询:

objective-c

或者您可以创建一个与ref.child("user_id").orderByChild("name").equalTo("objective-c") id_001124匹配的查询:

id_001125

或者只是让所有项目都以ref.child("user_id").orderByKey().startAt("id_001125") 开头:

id_0011

或者您可以创建一个与ref.child("user_id").orderByKey().startAt("id_0011") id_001123匹配的查询:

id_001124

Firebase数据库无法根据值的结尾进行过滤。因此,您当前的数据结构中无法获取其密钥以ref.child("user_id").orderByKey().endAt("id_001124") 结尾的所有项目。

请在此处详细了解Firebase数据库查询:https://firebase.google.com/docs/database/android/lists-of-data#sorting_and_filtering_data

查看以前有关搜索FirebaseL的许多问题