gpt4 book ai didi

firebase - 是否可以在 Firestore 中运行聚合查询?

转载 作者:行者123 更新时间:2023-12-05 00:47:06 24 4
gpt4 key购买 nike

堆栈:

Ionic
Nodejs/Express
Cloud Firestore

我的任务是编写一个应用程序,它以“日”格式获取日期,当天有余额,并使用 Chart.js 在图表中显示该数据。有间隔按钮可让您在“日”、“周”和“月”之间进行更改,这些按钮应该将日期分组到相应的间隔中。

目前使用 1 个集合可以正常工作。 “天”和“周”都可以工作,但是一旦我们到达“月”,有大量数据,Firestore 就会在我的后端中杀死自己。它尝试轮询的数据量太大。我目前使用“天”在后端运行“周”和“月”的聚合。

我可以在文档中找到的唯一聚合文档是:https://firebase.google.com/docs/firestore/solutions/aggregation这不会给我一个结果,它将它存储在一个对我没有帮助的集合中。该应用程序可以在单个日期更改余额,这会在事后对余额产生链式 react - 所以我必须生成间隔更改的值。

这样的事情是否存在,还是我坚持创建 3 个单独的集合,天/周/月并轮询所需的集合?

最佳答案

来自 docs你链接:

Cloud Firestore does not support native aggregation queries.

所以这几乎回答了您标题中的问题:Firestore 没有在数据库服务器上运行聚合的内置功能。<​​/p>

常见的解决方案是:

  1. 在客户端运行聚合

    听起来这就是您现在正在做的事情:您正在为内部下载所有数据,然后在客户端上聚合它。这种方法可以很好地用于小型数据集,但如果您只在客户端中显示聚合,您可能会下载比需要更多的数据。这就是为什么如果您的数据集可能很大,您应该考虑替代方案,当您使用 Firestore 时通常会(出现)。

  2. 每次数据更改时更新聚合

    在这种情况下,您将聚合值存储在数据库中,并在您写入聚合值时更新它。该文档显示了一个以这种方式计算移动平均值的示例,它根本不需要查询,因此可以扩展到任何大小的数据集。

    在这种情况下,您必须记住,Firestore 仅限于每秒对每个文档执行大约一次写入。因此,如果您收到的数据多于该数据,您可能需要分发聚合查询,如 distributed counters 上的文档中所示。 .

  3. 为您的聚合查询使用另一个数据库

    另一种选择是使用 Firestore 存储客户端读取的数据,但使用另一个数据库进行复杂的动态查询。

    这方面的一个典型示例是将数据从 Firestore 导出到 BigQuery,然后在 BigQuery 中执行计算,并将结果写回 Firestore,以便客户端可以读取它们。在这里,您可以将这两种产品用于它们最擅长的领域:Firestore 用于大规模提供数据,BigQuery 用于大规模处理数据。

关于firebase - 是否可以在 Firestore 中运行聚合查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58614592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com