是否可以从没有父文档ID的子集合中获取文档?
我们的结构如下:
RootCollection1
-- SubCollection1
-- SubCollection2
- Document1
-- SubCollection3
-- Document2
-- SubCollection2
-- Document3 [different fields with Document1]
应用程序用户将只有Document1 ID
。
我尝试实现集合组查询。请注意,SubCollection2
名称出现了两次,并且它们具有不同的字段/值。我只想从一个SubCollection2中获取文档。
是否可以从document {1中获取数据,而无需从SubCollection1
和RootCollection1
获得父doc id。
答案 0 :(得分:1)
如果您无法使用其完整路径查找文档(知道路径中所有文档和集合的名称),并且无法使用集合组查询,那么您要执行的操作是不可能的。您不能将集合组查询集中到特定的路径-它们总是考虑所有集合中具有相同名称的所有文档。
您有两种可行的解决方法:
更改子集合的名称,使其唯一且不会与不应在集合组查询中查询的子集合重叠。
向文档中添加一个字段,以便您可以在集合组查询的过滤器中使用它。您将必须能够确定感兴趣的文档,而不必考虑所有子集中具有相同名称的所有文档。例如,如果您有一个名为“ scope”的字段,则可以这样来缩小集合组查询的范围:
firestore.collectionGroup('coll').where('scope', '==', 'x')
或者您可以将文档ID作为字段存储在其中,并对其进行过滤:
firestore.collectionGroup('coll').where('id', '==', 'id')