Как я могу создать индексы для разных комбинаций полей в Firestore?

Предположим, у меня есть users Коллекция, которую я хочу отфильтровать на моей странице. Поля для фильтрации name, age, location,

По этой причине я создаю составной индекс (имя, возраст, местоположение). Проблема в том, что я хочу иметь возможность фильтровать по любой комбинации 3 - имя и возраст, имя и местоположение, возраст и местоположение. Когда я пытаюсь это сделать, мне предлагается создать другой составной индекс для используемой комбинации полей.

Мой вопрос - означает ли это, что я должен добавить индексы для всех возможных составных комбинаций? Если да, как я могу это сделать, если я хочу фильтровать по 10 полям, а не только по 3? Нужно ли самому создавать индексы для всех комбинаций?

1 ответ

Решение

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

Если вы используете несколько предложений равенства (==) для запросов, вы можете воспользоваться объединением индексов. Cloud Firestore может повторно использовать существующие индексы. В вашем случае у вас есть 3 столбца имя, возраст и местоположение, и вы хотите упорядочить по сердцам, а затем создать три индекса, как это:

Collection   Fields indexed
users        ↑ name,      ↑ hearts
users        ↑ age,       ↑ hearts
users        ↑ location,  ↑ hearts

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

Вы можете обратиться к документации Firestore о слиянии индексов здесь

Другие вопросы по тегам