如何对Firebase数据库中的排行榜数据进行排序以进行特定日期查询?

时间:2018-10-12 02:47:08

标签: java android firebase firebase-realtime-database

我要存储记分牌以及以毫秒为单位的日期,并使用startAtendAt方法查询日期。这给了我该日期范围内的所有用户,现在我想根据得分对用户进行排序,但我无法做到这一点。

2 个答案:

答案 0 :(得分:0)

这是一个非常普遍的问题。由于您尚未附加数据库或代码,因此我无法为您提供执行此操作的正确代码,但是以基本的原则可以按分数相同的顺序检索用户的最佳方法

基本原理是,除了在用户对象中设置名称和分数外,还可以使用setWithPriority为其设置优先级。

在这种情况下,优先级可以是用户的分数(如果是数字,它将自动为您排序)。然后,您可以使用.limit(10)查询来获取前10位用户的列表。

您还必须实现child_addedchild_changedchild_removed事件,以处理新用户进入前10名,某人改变职位而某人离开前者的情况分别有10个列表。

您可以在这里阅读并了解更多信息:https://www.firebase.com/tutorial/#example/leaderboard

答案 1 :(得分:0)

不幸的是,如果不对数据库的结构进行一些更改,就无法使用Firebase实时数据库实现此目标。与Cloud Firestore不同的是,实时数据库不具有对多个属性执行过滤的功能(如SQL术语中所述,使用“多个WHERE子句”)。

如果要检查多个属性的匹配项,则必须创建一个复合属性,其中可以包含要查找的属性的组合。例如,您将需要一个包含scoredate的字符串值,就像我在此 post 的答案中所解释的那样。