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