【问题标题】:Multi-Level queries on Firestore dataFirestore 数据的多级查询
【发布时间】:2021-09-10 22:57:14
【问题描述】:

我是 Firestore 的新手,正在尝试根据条件获取文档。下面是我目前正在处理的 Firestore 结构。

我试图仅从CollectionA 获取那些文档,其中CollectionB 的文档之一具有DataFieldB1 = "Google"。
这样可以避免一一浏览CollectionA 文档。
此外,当文档数量很大时,这可能不是获取文档的有效方法。

firestore 是否支持这种多级查询?请您指导我找到解决此问题的方法。

谢谢

【问题讨论】:

    标签: firebase google-cloud-platform google-cloud-firestore


    【解决方案1】:

    Firestore 中的查询只能包含它们返回的文档的条件。无法根据 CollectionB 中的条件查询 CollectionA。您还必须将信息复制(或汇总)到 CollectionA 中的相关文档中。

    或者,您可以对所有 CollectionB 文档运行集合组查询,然后找到相关的父文档。这通常比复制字段效率低,但在您过滤的值很少重复的情况下,它可能会更好。

    另见:

    【讨论】:

    • 感谢您的回答,我正要更新有关收藏组的信息,并看到您更新的答案。
    • 能否请您简要介绍一下复制的情况?显然我在CollectionB 中有多个文档,因此复制可能不可行。对吗?
    • 如果每个 CollectionB 中只有一个文档具有您要查找的值,则集合组查询的结果集将包含来自 CollectionB 的一个文档,对应于来自 CollectionA 的每个文档, 这是相当有效的。但是,如果每个CollectionB 中有多个文档用于同一个父文档,您最终会阅读更多文档。是否太多,当然只有你自己可以决定。
    • 在我的场景中,我认为一旦执行查询,每个CollectionA documentt 理想情况下都会有一个CollectionB 文档。原来一个CollectionA文档会有多个CollectionB文档。
    • 是的,所以任何一个都可能适合你。我通常更喜欢复制数据,但这可能是个人的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2023-03-09
    相关资源
    最近更新 更多