【问题标题】:Firebase Firestore composite index limit of 200 - is it reached if used in nested structure with lots of users?Firebase Firestore 复合索引限制为 200 - 如果在具有大量用户的嵌套结构中使用,是否达到?
【发布时间】:2018-04-27 12:53:47
【问题描述】:

我对 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 个复合索引吗?还是乘以我拥有的用户数量?

如果乘以用户数,我应该如何重组我的数据,以免遇到这个问题?

谢谢-

杰夫

【问题讨论】:

  • 也在firebase-talk群发帖。
  • 我们的项目需要 200 多个。我认为对它设置硬性限制不适用于任何可扩展的项目。随着您的项目越来越大,您最终将需要更多

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


【解决方案1】:

在与 Firebase 的 Sam Stern 讨论后,

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

来自山姆----

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

如果您想要索引 200 多个不同的字段组合,则只有接近 200 个索引限制。希望这是有道理的!

  • 山姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多