Как создать исключение индекса для поддокументов Firestore? - PullRequest
0 голосов
/ 27 февраля 2019

Наша база данных структурирована следующим образом:

  • Коллекция foo
    • Документы
      • Коллекция bar
        • Документы со многимиполя (приближается к пределу в 1 МБ)

Попытка записи документа в коллекцию bar, содержащую 34571 поле,Я получаю (из API Go):

Ошибка RPC: code = InvalidArgument desc = слишком много записей встроенного индекса для сущности

ОК, хорошо, itКажется Мне нужно добавить исключение:

Поля большого массива или карты

Поля большого массива или карты могут приблизиться к пределу в 20 000 записей индекса на документ.Если вы не делаете запросы на основе большого массива или поля карты, вы должны освободить его от индексации.

Но как? Консоль позволяет мне устанавливать только одно имя коллекции иодиночный путь к полю и слэши не принимаются:

Я пробовал другие комбинации, но / не принимается ни в Collection ID или Field path, и использование ., хотя это явно не запрещено, приводит к общей ошибке при попытке сохранить освобождение.Я также не уверен, разрешено ли *.

1 Ответ

0 голосов
/ 27 февраля 2019

Индексные исключения основаны на идентификаторе коллекции, а не пути сбора.В этом случае вы можете ввести bar в качестве идентификатора коллекции.Это также означает, что исключение распространяется на все коллекции с идентификатором bar, независимо от иерархии.

Что касается полей, вы можете указать только один путь к полю на исключение.Селектор "*" не поддерживается.Существует ограничение в 200 исключений индекса , поэтому вы не сможете исключить все 34571 поля.Если возможно, я предлагаю перенести ваши поля на карту.Тогда вы можете отключить индексирование в поле карты.

...