我很担心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个复合索引吗?或者这是否乘以我拥有的用户数量?
如果它乘以用户数量,我应该如何重构我的数据以便我不会遇到这个问题?
谢谢 -
杰夫
答案 0 :(得分:0)
与Firebase的Sam Stern讨论后,
答案是索引未乘以用户数。
来自山姆----
索引实际上取决于集合名称,因此“用户”文档的所有“字符”子集合都可以共享相同的索引。
如果要索引的字段组合超过200种,则只有接近200个索引限制。希望有道理!
- 山姆