假设我有一个users
集合要在我的页面中进行过滤。要过滤的字段为name
,age
,location
。
由于这个原因,我创建了一个复合索引(名称,年龄,位置)。问题是我想有机会按以下3种组合进行过滤:姓名和年龄,姓名和位置,年龄和位置。当我尝试执行此操作时,系统会提示我为使用的字段组合创建另一个复合索引。
我的问题是-这是否意味着我必须为所有可能的组合组合添加索引?如果是,如果我想按10个字段而不是3个字段进行过滤,该如何实现?我必须自己为所有组合创建索引吗?
答案 0 :(得分:1)
是的,您将必须自己创建每个组合。最简单的操作可能是使用Firebase CLI根据您创建和管理的JSON文件部署索引(可能存储在源代码管理中)。您甚至可以编写一些代码来生成此文件,因此不必手动创建每个组合。
答案 1 :(得分:0)
如果对查询使用多个相等(==)子句,则可以利用索引合并。 Cloud Firestore可以重复使用现有索引。在您的情况下,您有3列名称,年龄和位置,并且您希望按心排序,然后创建三个索引,如下所示:
HEAD
现在,您可以使用多个相等(==)子句创建名称,年龄和位置组合的不同查询。
您可以参考Firestore文档中有关索引合并here
的信息