集合组查询是否从所有同名集合中获取数据?

Sky*_*ker 3 firebase google-cloud-firestore

我有这个 Firebase Cloud Firestore 架构:

my_db -> users -> uid -> places -> placeId
Run Code Online (Sandbox Code Playgroud)

my_db -> places -> placeId
Run Code Online (Sandbox Code Playgroud)

此集合组查询是否会在两条路径中获得位置?如果是的话,我肯定会得到重复的。有什么办法可以避免这种情况吗?

编辑:我的目标是获取所有用户中的所有位置,而不是数据库中所有集合中的所有位置。

Dou*_*son 6

集合组查询始终查看具有您提供的名称的任何深度的任何路径的所有顶级集合和子集合。没有办法改变这种行为。如果您想限制查询的范围,则需要以不同的方式命名您的集合。

如果您无法更改数据库结构,您至少可以通过查看收到的快照中文档的路径来过滤客户端上的文档,从而忽略您不感兴趣的集合的结果,并决定如果您应该处理该文档,请自行处理。

另一种策略是在每个子集合的文档中放置一个顶级集合文档中不存在的布尔字段。您可以使用此字段仅查询子集合中的文档。