Firebase Firestore复合索引限制为200 - 如果在具有大量用户的嵌套结构中使用,是否达到了?

时间:2018-04-27 12:53:47

标签: firebase indexing limit google-cloud-firestore composite

我很担心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. 

那么,根据Firebase,这仅仅是2个复合索引吗?或者这是否乘以我拥有的用户数量?

如果它乘以用户数量,我应该如何重构我的数据以便我不会遇到这个问题?

谢谢 -

杰夫

1 个答案:

答案 0 :(得分:0)

与Firebase的Sam Stern讨论后,

答案是索引未乘以用户数。

来自山姆----

  

索引实际上取决于集合名称,因此“用户”文档的所有“字符”子集合都可以共享相同的索引。

     

如果要索引的字段组合超过200种,则只有接近200个索引限制。希望有道理!

     
      
  • 山姆
  •