#android #firebase #google-cloud-firestore
#Android #firebase #google-cloud-firestore
Вопрос:
Предположим, что у меня есть коллекция с именем «студенты» ниже:
- коллекция
students
имеет 3 поля:- Имя
- возраст
- статус (0: пройдено, 1: сбой, -1: не проверено)
(поле «статус» описывает, что студент прошел, не прошел или еще не прошел тестирование)
- Коллекция
students
содержит 1000 документов с разным «статусом» - Теперь я хочу получить количество студентов, которые [сдали / провалили / не протестировали] экзамен
- И всякий раз, когда «статус» учащегося обновляется 0/1 / -1, мне придется пересчитывать.
Как я могу это решить? Я не должен запрашивать все данные для каждого обновления, потому что это приведет к высокой стоимости. ОБРАТИТЕ внимание, что я хочу подсчитать базу в поле «статус».
Ответ №1:
То, что вы описываете, является распространенным вариантом использования и описано в документации Firebase по запросам агрегации. Чтобы сделать их (экономически) эффективными при масштабировании, вы захотите сохранить агрегированное значение в базе данных, а затем обновлять его при каждой операции записи.
Обновление может быть выполнено с клиента, но чаще всего выполняется из облачной функции. Документация, на которую дана ссылка, охватывает оба подхода.