Глубокий запрос группы коллекционирования firebase в firestore

# #google-cloud-firestore #firebase-tools

Вопрос:

У меня есть структура коллекции в Firestore, которая выглядит так:

 /teams/**/days/**/milestones/**
/teams/1WCraAZXLSNSoMvkZuSV/days/20210822/milestones/xyzdocid
 

Итак, в конце у меня будет набор документов в коллекции «Вехи». Я пытаюсь запросить вехи как группу коллекционирования. Как мне настроить индекс группы коллекций для этого?

Это слишком глубоко для работы группы коллекционирования? Как выглядит индекс для этого? Возможно ли создать этот индекс группы коллекций в эмуляторе firebase?

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

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

2. Вы говорите, что я пытаюсь запросить вехи как группу коллекционирования. Что вы пробовали до сих пор?

3. Две проблемы: 1. Я не могу понять, как создать индекс в эмуляторе. Должен ли я делать это только в живой консоли? 2. Я не могу понять, как создать индекс для подколлекции «Вехи». Вся документация предполагает наличие глубоких вложенных коллекций 1 уровня. Область «создать исключение» в живой консоли не позволяет мне указать глубокий путь к этой вложенной коллекции. Каким-то образом мне нужно сказать, что индекс должен быть на детях/днях/вехах. Ни одно из полей не допускает путь.

4. Спасибо, Фрэнк, хотя ты и сказал это, основываясь только на названии, какое — то время мне это не нравилось. Совершенно новая концепция, позволяющая выполнять запросы по коллекциям, документам и на любом пути / уровне.

Ответ №1:

Для всех, кто столкнулся с той же проблемой:

  1. В эмуляторе автоматически работают группы сбора и все операции, связанные с индексами. Вам не нужно настраивать ничего особенного. Это было не очень хорошо задокументировано. Я потратил довольно много времени, пытаясь выяснить, как создать индекс в эмуляторе. Это также означает, что вам нужно будет провести довольно много тестов с живой учетной записью firebase, потому что большинство вещей там автоматически работать не будут.
  2. Формат группы коллекций основан только на названии коллекции, а не на ваших индексах или каких-либо путях. Это означает, что если в вашей структуре есть коллекции, называемые «вехи», концепция collectionGroup объединит их вместе. Это очень мощно, но будьте осторожны с коллекциями / вложенными коллекциями с тем же именем, но с другим назначением.