我正在使用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"]
}
}
有没有办法在日期中以某种方式指定通配符,所以它适用于任何新日期?或者我可以每周以编程方式创建新索引,还是有其他我可能没想过的解决方案?
另外,考虑手动创建一年中所有周的列表并一次性添加,但可能会有限制吗?
最后,但并非最不重要的是,我只对目前的一周和上周的分数感兴趣,任何年龄较大的我都想保留它以获得一些历史数据,但我不会在游戏中查询,所以可能摆脱旧周的指数。
干杯!
答案 0 :(得分:7)
感谢@Tristan指出我正确的方向。
我使用以下代码来定义索引,现在警告已经消失:
queries
现在看起来非常明显,但在文档中找不到任何明确的内容。
请注意,"game_scores-weekly": {
"$date": {
".indexOn": ["score", "uid"]
}
}
可以是任何名称,似乎您可以使用任何$date
指定变量值。