在Firestore中组织数据的建议



有没有人对哪种数据模型在Firestore中对时间相关数据有意义有好的想法?

我有很多事件数据,我想存储在Firestore中,然后对其进行分析

每个事件都有一个时间戳,我想运行聚合分析,例如1天的数据,7天的数据,X天的数据,1个月,X个月,等等

如何在firestore中设置,7天的事件数据已经是很多数据了,我不能将其返回给客户端并在那里进行分析。如果我事先在firestore中聚合了一些预定义的天数,那么它将被锁定到这些天数,并且您不能选择任意数量的天数。我还需要在每次有新数据

时不断更新聚合数据。任何帮助都非常感谢!

据我所知,您正在寻找执行类似于以下查询:

SELECT hits, COUNT(*)  FROM event_type_api  GROUP BY hits WHERE start_date > TODAY - X

Firestore是一个NoSQL数据库,但这并不意味着你不能知道查询中的文档数量。你不能用SQL术语,但是你可以计算它们。如果只读取集合中的所有文档,则开销会有点大。这就是为什么需要调用count()。正如你已经提到的,也没有"分组"。存在于Firestore中。然而,我们可以实现几乎相同的事情。

假设您将创建一个名为"hits"其中存储具有timestamp类型字段的文档,那么您可以执行以下查询:

val queryByTimestamp = db.collection("hits").whereGreaterThan("timestamp", TODAY - X)

如果您想知道查询返回了多少个文档,您需要像这样调用count():

val numberOfDocuments = queryByTimestamp.count()

最后一件事与分组有关。如前所述,Firestore不提供任何聚合查询,如分组。然而,对于这个用例有两种解决方案。您可以获取hits集合中的所有文档,然后在应用程序代码中按需要的字段对它们进行分组。或者您可以创建预先分组文档的单独集合来满足您的需要。后者是推荐的方法。请记住,当涉及到NoSQL数据库时,复制数据是一种非常常见的做法。

相关内容

  • 没有找到相关文章