Firestore получает документы с максимальной ценностью - PullRequest
0 голосов
/ 08 января 2020

У меня есть коллекция документов:

data class Game(
    var userId: String? = "",
    var userName: String? = "",
    var date: Timestamp? = null,
    var award: Int
)

Я хочу сделать рейтинг за последнюю неделю, упорядоченный по награде и сгруппированный по имени пользователя (всего 1 строка для каждого пользователя).

Этот код возвращает все записи с повторением.

db.collection("games").orderBy("award", Query.Direction.DESCENDING).limit(50).get()

Есть ли способ получить пользователей с максимальной стоимостью награды без повторных пользователей? Или, может быть, моя структура базы данных неверна?

1 Ответ

2 голосов
/ 08 января 2020

Firestore не предлагает никакой группировки в запросах. Как вы, возможно, знаете из баз данных типа SQL, агрегатных функций не существует.

Если вам нужно отслеживать агрегированную информацию, вам нужно будет найти другой способ записи этой информации. Обычно для этого требуется другая коллекция (в вашем случае один документ на пользователя), в которой совокупные значения, такие как минимальное и максимальное значения, сохраняются и обновляются по мере изменения «исходной» коллекции со временем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...