热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Firebase数据库-为"动态"子项添加索引

如何解决《Firebase数据库-为"动态"子项添加索引》经验,为你挑选了1个好方法。

我正在使用Firebase数据库来存储游戏的分数.一切正常,直到我决定实施"每周分数".

为了能够按分数过滤然后按周排序,我将数据存储在以下结构中:

game_scores-weekly
    2018-01-29
        user_id: { score, date, bla, bla bla}
        user_id: { score, date, bla, bla bla}
        user_id: { score, date, bla, bla bla}

    2018-02-05
        user_id: { score, date, bla, bla bla}
        user_id: { score, date, bla, bla bla}

所以,这个工作得很好,但是由于没有索引"game_scores-weekly/new_week"indexOn"得分",我每个新周都会因为性能问题而得到令人讨厌的警告.手动添加索引有效...直到下周,所以不是一个选项.

    "game_scores-weekly": {
      "2018-02-19": {
        ".indexOn": ["score", "uid"]
      },
      "2018-02-12": {
        ".indexOn": ["score", "uid"]
      }
    } 

有没有办法在日期中以某种方式指定通配符,所以它适用于任何新的日期?或者我可以每周以编程方式创建新索引,还是有任何其他我可能没想过的解决方案?

另外,考虑手动创建一年中所有星期的列表并一次性添加它,但可能是一个限制?

最后,但并非最不重要的是,我只对目前的一周和上周的分数感兴趣,任何年龄较大的我都希望保留它以获得一些历史数据,但我不会在游戏中查询,所以可能会摆脱旧周的指数.

干杯!



1> Javier C. H...:

感谢@Tristan指出我正确的方向.

我使用以下代码来定义索引,现在警告消失了:

"game_scores-weekly": {
  "$date": {
    ".indexOn": ["score", "uid"]
  }
} 

现在看起来非常明显,但在文档中找不到任何明确的内容.

请注意,$date实际上可能是任何名称,似乎您可以使用any指定变量值$identifier.


推荐阅读
author-avatar
风中的百合香迷人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有