Все это требует, чтобы вы рассмотрели несколько свойств.А поскольку база данных Firebase Realtime может упорядочивать / фильтровать только одно свойство, вы не сможете выполнить это без изменения модели данных.Для хорошего учебника, прочитайте мой ответ здесь: Запрос, основанный на нескольких выражениях where в Firebase
В этом случае вам потребуется три дополнительных свойства для каждого узла:
- свойство, сочетающее месяц и популярность, для вашего первого запроса.Например:
"month_popularity": "201812_125"
(если популярность 125). - свойство, объединяющее месяц и рейтинг для вашего второго запроса.Например:
"week_rating": "2018w51_4"
. - свойство, объединяющее день и рейтинг для вашего третьего запроса.Например:
"day_rating": "20181225_4"
.
С этими свойствами вы можете упорядочить нужный интервал и отфильтровать значения для нужного диапазона.Например, чтобы получить 50 лучших игр за этот месяц:
ref.orderByChild("month_popularity").startAt("201812_").endAt("201812~")
, где ~
- это просто символ после _
в ASCII, гарантируя, что мы перестанем возвращать результаты после результатов этого месяца.