В целях выставления счетов каждый запрос, в результате которого читается документ, учитывается в стоимости.
Это верно и согласно официальной документации, касающейся Cloud Firestore :
Минимальная плата за чтение одного документа за каждый выполняемый вами запрос, даже если запрос не дает результатов.
Таким образом, с вас также взимается платаодин документ прочитан, даже если ваш запрос не возвращает никаких результатов.
Я считаю, что тогда каждому пользователю придется сканировать всю коллекцию и выбирать документы там, где появляется электронная почта.
Это тоже правильно.Итак, давайте предположим, что адрес электронной почты, который вы ищете, существует в документе, который состоит из набора из 10 тыс. Документов.Поэтому, если вы запрашиваете базу данных только для этого конкретного документа, вам будет предъявлено обвинение в только в одном документе, прочитанном , а не в этих 10k
.Таким образом, с вас взимается плата в зависимости от количества предметов, которые вы получаете, а не от количества товаров, которые вы запрашиваете у них.И это доступно для первого запроса, когда вы получаете данные с серверов Firebase.Если за это время ничего не изменилось, во второй раз вы получаете данные из кэша, поскольку Firestore по умолчанию включает автономное сохранение .Что означает, что вы не платите за прочтение любого другого документа.
Есть ли другой подход к этому, когда пользователь1 может программно предоставить пользователю user2 / 3/4 один конкретный документ?
Без записи данных в базу данных нет.Поэтому вы должны добавить идентификаторы или адреса электронной почты в нужные документы и выполнить запрос в соответствии с ним.