Firebase 仅使用其 ID 从子集合中获取文档

标签 firebase google-cloud-firestore

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

我们的结构如下:

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

应用程序用户将只有 Document1 ID

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

是否可以从 SubCollection1RootCollection1 中获取没有父文档 ID 的 document1 数据。

最佳答案

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

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

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

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

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

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

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

关于Firebase 仅使用其 ID 从子集合中获取文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62848364/

相关文章:

javascript - 使用 angular 2 添加 firebase 的单元测试

ios - 以秒为单位转换 Firebase 时间戳?

iOS - 没有 VOIP/FCM 的 PushKit 和 CallKit

javascript - 使用 FireStore 时 For 循环仅进行最后一次迭代

android - 未处理的异常: '_InternalLinkedHashMap<dynamic, dynamic>'类型不是 'Map<String, dynamic>'类型的子类型吗?

java - 无需用户名和密码的 Firebase 身份验证

javascript - 如何从 '/functions' 以外的目录部署函数?

Firebase 列表未在设置状态下更新

firebase - Firestore 定价;需要帮助理解文档中的短语

java - 如何找出 Firestore 中事务失败的根本原因?