【问题标题】:firebase Deep collectionGroup query in firestorefirebase Firestore中的深度collectionGroup查询
【发布时间】:2021-08-24 18:58:30
【问题描述】:

我在 Firestore 中有一个集合结构,如下所示:

/teams/**/days/**/milestones/**
/teams/1WCraAZXLSNSoMvkZuSV/days/20210822/milestones/xyzdocid

所以,最后我会在里程碑集合中拥有一组文档。我正在尝试将里程碑作为集合组进行查询。如何为此设置 collectionGroup 索引?

对于collectionGroup 是否工作太深?这个索引是什么样子的?是否可以在 firebase 模拟器中创建此 collectionGroup 索引?

【问题讨论】:

  • 这一切对我来说都是可行的。集合组不依赖于深度,而纯粹依赖于集合的名称,这在两个子集合中都是相同的。您是否已经尝试创建必要的索引?你遇到了什么问题?
  • 你说我正在尝试以集合组的形式查询里程碑。。到目前为止,您尝试过什么?
  • 两个问题: 1. 不知道怎么在模拟器中创建索引。我是否必须仅在实时控制台中执行此操作? 2. 我不知道如何在里程碑子集合上创建索引。所有文档都假定 1 级深度子集合。实时控制台中的“创建豁免”区域不允许我指定此子集合的深层路径。不知何故,我需要说索引应该在孩子/日子/里程碑上。所有字段都不允许路径。
  • 谢谢弗兰克,尽管你只是根据名字说的,但我有一段时间没有点击。全新的概念,能够跨集合、文档和任何路径/级别进行查询。

标签: google-cloud-firestore firebase-tools


【解决方案1】:

致遇到同样问题的人:

  1. 在模拟器中,collectionGroups 和所有与索引相关的操作都会自动工作。你不需要设置任何特别的东西。这没有很好的记录。我花了很长时间试图找出如何在模拟器中创建索引。这也意味着,您将需要使用实时 Firebase 帐户进行大量测试,因为大多数事情不会自动在那里工作。

  2. collectionGroup 格式仅基于集合的名称,而不是您的索引或任何类型的路径。这意味着,如果您在结构中的任何地方都有称为“里程碑”的集合,那么 collectionGroup 概念会将它们组合在一起。这非常强大,但要小心同名但用途不同的集合/子集合。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    相关资源
    最近更新 更多