如何在Firestore中为字段的不同组合创建索引?

时间:2018-10-25 15:05:07

标签: firebase google-cloud-firestore firebase-security-rules

假设我有一个users集合要在我的页面中进行过滤。要过滤的字段为nameagelocation

由于这个原因,我创建了一个复合索引(名称,年龄,位置)。问题是我想有机会按以下3种组合进行过滤:姓名和年龄,姓名和位置,年龄和位置。当我尝试执行此操作时,系统会提示我为使用的字段组合创建另一个复合索引。

我的问题是-这是否意味着我必须为所有可能的组合组合添加索引?如果是,如果我想按10个字段而不是3个字段进行过滤,该如何实现?我必须自己为所有组合创建索引吗?

2 个答案:

答案 0 :(得分:1)

是的,您将必须自己创建每个组合。最简单的操作可能是使用Firebase CLI根据您创建和管理的JSON文件部署索引(可能存储在源代码管理中)。您甚至可以编写一些代码来生成此文件,因此不必手动创建每个组合。

答案 1 :(得分:0)

如果对查询使用多个相等(==)子句,则可以利用索引合并。 Cloud Firestore可以重复使用现有索引。在您的情况下,您有3列名称,年龄和位置,并且您希望按心排序,然后创建三个索引,如下所示:

HEAD

现在,您可以使用多个相等(==)子句创建名称,年龄和位置组合的不同查询。

您可以参考Firestore文档中有关索引合并here

的信息