Firestore имеет совершенно уникальную гарантию производительности: время, необходимое для извлечения данных, зависит только от объема данных, которые вы извлекаете, а не от объема данных, из которого вы его извлекаете. Поэтому независимо от того, есть ли в коллекции тысяча, миллион или миллиард документов, для извлечения десяти из этих документов всегда будет требоваться одинаковое количество времени.
Чтобы гарантировать такую производительность, Firestore имеет ограниченный набор (в основном запросов) возможностей. Например: Firestore поддерживает только те запросы, для которых он может перейти к правильной начальной точке в индексе и передавать результаты с этой начальной точки до конца запроса. Это не позволяет поддерживать такие вещи, как:
- ИЛИ запросы, поскольку они потребуют пропуска по индексу, что сделает невозможным гарантировать производительность. Обратите внимание, что в настоящее время ведется работа по поддержке подмножества возможных запросов IN, чтобы вы могли запросить что-то вроде «дай мне все рестораны, где подают блюда тайской или итальянской кухни».
- запросов на подстроку текста. Firestore поддерживает только так называемые префиксные запросы, поэтому, когда значение начинается с подстроки, но не там, где значение содержит подстроку. Таким образом, вы можете искать «дать мне все имена, которые начинаются с« zla »», но не «дать мне все имена, которые содержат« лат »».
- запросы в нескольких диапазонах, поскольку они также могут сделать невозможным гарантировать производительность.
Для другого хорошего объяснения этого см. Знакомство с Cloud Firestore эпизод по запросам .