Ограничение составного индекса Firebase Firestore в 200 - достигается ли оно, если используется во вложенной структуре с большим количеством пользователей? - PullRequest
0 голосов
/ 27 апреля 2018

Я запутался в том, что Firestore считает своим составным пределом индекса 200.

Например, допустим, у меня тысячи пользователей, а у каждого пользователя тысячи символов. Я хочу, чтобы каждый пользователь мог сортировать своих персонажей, основываясь на разных параметрах этих персонажей. У меня есть следующая структура, где {} обозначает подстановочный знак:

users:
   {user_ID}
      user_name: {user_name}
      user_email: {user_email}
      characters:
         {characterUID}
            name:  {name}
            strength:  {strength}
            speed:  {speed}
            stamina: {stamina}
            date_created:  {timestamp}

Итак, в Android, я бы тогда сделал это:

Query query = fsDB.collection("users").document("user_ID").collection("characters")
.orderBy("strength").orderBy("name");  

Или это:

Query query = fsDB.collection("users").document("user_ID").collection("characters")
.orderBy("speed").orderBy("date_created");

Затем я бы создал составной индекс в консоли Firebase как:

Collection Group:   characters

Fields Indexed:  strength , name

и

Collection Group:  characters

Fields Indexed:  speed, date_created. 

Итак, это всего лишь 2 составных индекса в соответствии с Firebase? Или это умножается на количество пользователей, которых я имею?

Если оно умножается на количество пользователей, как мне следует реструктурировать мои данные, чтобы я не столкнулся с этой проблемой?

Спасибо -

Jeff

1 Ответ

0 голосов
/ 21 июня 2018

После обсуждения с Сэмом Стерном в Firebase,

Ответ заключается в том, что индексы не умножаются на количество пользователей.

От Сэма ----

Индексы в действительности зависят от имени коллекции, поэтому все подколлекции «символов» ваших «пользовательских» документов могут иметь одинаковые индексы.

Вы бы приблизились к пределу индекса в 200, если бы у вас было более 200 различных комбинаций полей, которые вы хотите проиндексировать. Надеюсь, что это имеет смысл!

  • Sam
...