我在firebase中具有以下文档结构:
{
typeId: number,
tripId: number,
locationId: string,
expenseId: number,
createtAt: timestamp
}
我想每次使用不同的“ where”语句查询此集合。有时用户想要按类型ID进行过滤,有时要按locationId进行过滤,或者可能包括所有过滤器。
但是似乎我需要为每个可能的排列创建一个复合索引?例如:typeId + expenseId, typeId + locationId, location + expenseId,
等,否则它将不起作用。
如果我有20个字段,并且希望能够搜索所有这些字段怎么办?
能否请您为以下要求构建一个查询和索引:可以查询所有字段,查询可以包含where子句中包含的一个,两个,三个,所有或不包含字段,并且始终必须按降序排列由createdAt排序。
答案 0 :(得分:1)
Cloud Firestore自动为文档的各个字段创建索引。因此,它可以在每个字段上进行过滤,而无需手动添加这些索引。
在许多情况下,通过执行所谓的zig-zag-merge-join,可以组合这些索引以允许对字段组合进行查询。
除过滤子句外,通常仅在向查询添加排序子句后才需要自定义其他索引。如果遇到这种情况,Firestore客户端将记录一条错误消息,告诉您确切要创建的索引(带有指向Firestore控制台的链接,该链接已预先填充为您创建了索引)。