在不同“路径”上具有相同名称的firestore集合的索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在不同“路径”上具有相同名称的firestore集合的索引相关的知识,希望对你有一定的参考价值。

在我的firestore数据库中,我在层次结构的不同部分使用相同的集合名称。例如,想象一个类似stackoverflow的站点,其中包含以下2个集合

/questions/{questionId}/votes/ /questions/{questionId}/answers/{answerId}/votes/

所以现在我想在这两个集合中的一个上创建一个索引。我希望firestore需要某种“路径与通配符”,就像我上面用来识别要编入索引的数据一样。但是,相反,它们只需要集合名称:在这种情况下,“投票”。

因此,如果我在“投票”上加上一个索引,它是否适用于这两个集合?有没有办法在其中一个集合上放置索引而不是另一个?使用唯一的集合名称来避免此问题是最佳做法吗?

答案

TL;DR:

是。索引基于集合ID。这适用于我们在单个字段上自动为您创建的那些,以及您手动创建的复合索引。如果它们在语义上是不同的索引,我们建议您给它们唯一的ID,因此您可以使用question_votesanswer_votes

More Info

集合ID是集合的标识符,不包括完整路径。在你的情况下,这是你注意到的votes

我们当前提供的查询使用特定路径的索引子集,尽管我们将来有计划允许您执行跨越具有相同集合ID(集合组)的所有集合的查询。这一小部分信息为原因增加了一些背景。

第二个原因是系统中存在200个复合索引限制,因此如果有人拥有如下结构的数据模型/users/{user_id}/blog_posts/{post_id},那么他们就没有真正的方法可以在blog_posts上为少数几个用户创建复合索引(更不用说为每个用户创建新索引的操作负担!)

以上是关于在不同“路径”上具有相同名称的firestore集合的索引的主要内容,如果未能解决你的问题,请参考以下文章

创建具有相同名称但不同数据路径的多个临时表

BIG QUERY SQL:如何在具有相同唯一键但访问期间不同的访问中查找不同的重复集?

如何将 Git 补丁应用于具有不同名称和路径的文件?

标题与标准标题具有相同名称但大小写不同的问题

使用 SAX 解析器,如何解析具有相同名称标签但元素不同的 xml 文件?

如何从 FireStore 查询文档名称?