【问题标题】:Firebase Database - How to perform a prefix wildcard queryFirebase 数据库 - 如何执行前缀通配符查询
【发布时间】:2017-07-12 10:02:36
【问题描述】:

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

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

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

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

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

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

任何移动语言示例代码都很棒。 (Objective-C/Swift/Java)

【问题讨论】:

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


    【解决方案1】:

    Firebase 数据库查询可以根据对象的键(例如 id_001123)、它们的值(不适用于您的情况)或子属性的值(例如 name = "java")。

    对于这些 Firebase 中的每一个,都可以匹配具有您指定的特定值的项目、以您指定的值开头的项目或以您指定的值结尾的项目。

    因此,您可以创建一个与名为 objective-c 的项目匹配的查询:

    ref.child("user_id").orderByChild("name").equalTo("objective-c")
    

    或者您可以创建一个匹配 id_001124id_001125 的查询:

    ref.child("user_id").orderByKey().startAt("id_001125")
    

    或者只是获取以id_0011开头的所有项目:

    ref.child("user_id").orderByKey().startAt("id_0011")
    

    或者您可以创建一个匹配 id_001123id_001124 的查询:

    ref.child("user_id").orderByKey().endAt("id_001124")
    

    Firebase 数据库无法根据值的结尾进行过滤。因此,在您当前的数据结构中无法获取键以4 结尾的所有项目。

    请在此处阅读有关 Firebase 数据库查询的更多信息:https://firebase.google.com/docs/database/android/lists-of-data#sorting_and_filtering_data

    并查看有关搜索 FirebaseL 的许多先前问题中的一些问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 2018-12-08
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多