【问题标题】:Firebase realtime database GroupBy approachFirebase 实时数据库 GroupBy 方法
【发布时间】:2018-03-01 00:41:31
【问题描述】:

我有一个 Firebase 实时数据库,用作我的 Android 应用程序的后端。该应用程序用于显示足球联赛的赛程。结果显示在片段的列表视图中。

我有这样的记录结构;

  • 客队
  • 日期
  • 游戏ID
  • 主队
  • 间距
  • 时间

我想做的是按时间顺序按特定日期对游戏进行分组。因此,如果我有 10 场比赛(记录),前 5 场比赛在 01/04/2018,接下来的 5 场比赛在 01/05/2018,我希望能够展示 2018 年 1 月 4 日的所有比赛在自己的分组框中等等。

在 SQL Group By 中很容易实现,但我不确定这是否可以通过查询实现,或者我是否必须编写一个递归函数来构建树视图并按数组级别的数据对它们进行排序.

感谢任何帮助。

【问题讨论】:

    标签: android listview firebase firebase-realtime-database


    【解决方案1】:

    Firebase 中没有 group by 操作。事实上,您会发现 Firebase 中缺少许多您习惯于关系数据库的操作。

    您得到的回报是更灵活的数据模型。例如:如果您想按特定数据对游戏进行分组,您可以将它们存储在该特定日期下作为键:

    games
      2018-02-28
        game1: { ... }
        game2: { ... }
        game3: { ... }
      2018-03-01
        game4: { ... }
    

    现在您可以对给定日期的所有游戏进行简单的查找。

    如果您想按不同的标准对游戏进行分组,您可能会保留原始列表,然后为每个标准创建查找列表(通常也称为索引)。例如

    gamesByDate
      2018-02-28
        game1: true
        game2: true
        game3: true
      2018-03-01
        game4: true
    gamesByTeam
      Team1
        game1: true
        game2: true
      Team2
        game1: true
        game3: true
        game4: true
    

    现在您可以按日期或团队查找游戏 ID,然后按该 ID 查找每个游戏的属性。

    【讨论】:

      猜你喜欢
      • 2020-07-05
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多