Совпадает ли .document (uid) с .wherequal(«uid», uid)?

#android #firebase #kotlin #google-cloud-firestore

#Android #firebase #kotlin #google-облако-firestore

Вопрос:

Является ли эта операция:

 db.collection("users").document(uid)
  

То же самое с:

 db.collection("users").whereEqual("uid", uid)
  

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

Ответ №1:

Этот код:

 db.collection("users").document(uid)
  

Не требует чтения какого-либо документа. Ни один документ еще не был прочитан. Единственное, что он делает, это создает объект DocumentReference, который можно использовать для get() документа (или добавить слушателя). get() Стоимость чтения документа.

Этот код:

 db.collection("users").whereEqual("uid", uid)
  

Также не требует чтения документа до тех пор, пока вы не вызовете get() (или не добавите слушателя). Но если вы будете называть get() , то это будет стоить как минимум один документ прочитать, даже если ни одного документа нет. Это описано в документации по ценообразованию:

За каждый выполняемый вами запрос взимается минимальная плата в размере одного прочитанного документа, даже если запрос не возвращает результатов.

Комментарии:

1. Спасибо за ответ. В первом случае, когда мы вызываем get , почему это стоит одного прочитанного документа, даже если документа для чтения нет?

2. Это стоимость доступа к масштабируемому индексу, используемому для быстрого поиска документа, независимо от размера коллекции.