【问题标题】:Firebase Get document from subcollection using its ID onlyFirebase 仅使用其 ID 从子集合中获取文档
【发布时间】:2020-11-01 00:37:44
【问题描述】:

是否可以从没有父文档 ID 的子集合中获取文档?

我们有这样的结构:

RootCollection1
 -- SubCollection1
    -- SubCollection2
       - Document1
    -- SubCollection3
       -- Document2
          -- SubCollection2
             -- Document3 [different fields with Document1]

应用用户将只有Document1 ID

我尝试实现一个集合组查询。请注意,SubCollection2 名称出现了两次,并且它们具有不同的字段/值。我只想从一个 SubCollection2 中获取文档。

是否可以在没有来自SubCollection1RootCollection1 的父文档ID 的情况下从document1 获取数据。

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    如果您无法使用完整路径找到文档(知道路径中所有文档和集合的名称),并且您不能使用集合组查询,那么您要做的是'不可能。您不能将集合组查询集中到特定路径 - 它们总是考虑所有集合中具有相同名称的所有文档。

    您有两种可行的解决方法:

    1. 更改子集合的名称,使其唯一且不与不应在集合组查询中查询的子集合重叠。

    2. 向文档添加一个字段,以便您可以在集合组查询的过滤器中使用它。您必须能够识别您感兴趣的文档,而无需考虑所有具有相同名称的子集合中的所有文档。例如,如果您有一个名为“范围”的字段,您可以像这样缩小集合组查询的范围:

      firestore.collectionGroup('coll').where('scope', '==', 'x')
      

      或者您可以将文档的 ID 作为字段存储在其中,并对其进行过滤:

      firestore.collectionGroup('coll').where('id', '==', 'id')
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 2020-04-23
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多