Как получить количество документов ПО фильтру коллекции в Android Cloud firestore

#android #firebase #google-cloud-firestore

#Android #firebase #google-cloud-firestore

Вопрос:

Предположим, что у меня есть коллекция с именем «студенты» ниже:

  • коллекция students имеет 3 поля:
    • Имя
    • возраст
    • статус (0: пройдено, 1: сбой, -1: не проверено)

(поле «статус» описывает, что студент прошел, не прошел или еще не прошел тестирование)

  • Коллекция students содержит 1000 документов с разным «статусом»
  • Теперь я хочу получить количество студентов, которые [сдали / провалили / не протестировали] экзамен
  • И всякий раз, когда «статус» учащегося обновляется 0/1 / -1, мне придется пересчитывать.

Как я могу это решить? Я не должен запрашивать все данные для каждого обновления, потому что это приведет к высокой стоимости. ОБРАТИТЕ внимание, что я хочу подсчитать базу в поле «статус».

Ответ №1:

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

Обновление может быть выполнено с клиента, но чаще всего выполняется из облачной функции. Документация, на которую дана ссылка, охватывает оба подхода.