如何使用 Firestore 在特定时间范围内实现计数器



我正在寻找Firebase的Firestore数据库中特定文档计数器的解决方案,但增加了一个要求,即我需要它来保持特定时间戳之间的文档计数。

因此,例如,我们的"视频"集合中有一堆文档,其中包含与每个视频相关的信息。每个视频文档还有一个子集合"统计信息",该子集合在每次查看给定视频时都有一个时间戳视图。我们在视频文档上确实有一个聚合计数器,每次将视图添加到其统计信息子集合时,该计数器都会递增,但这仅给出总观看次数。我们需要能够查询过去 7 天和过去 30 天的观看次数。

如您所理解的,使用范围筛选器查询子集合中的所有视图文档在服务器端和客户端都不是一个好的解决方案,因为视图文档的数量扩展到数百万,这将是昂贵的。

有没有人为过去 x 天的视图计数器提供解决方案?我想不出一种方法来确保它准确更新,而不必查询可能数百万个视图文档。

也许是一个名为统计信息的集合,其中包含每个视频的文档。每个视频都有一个带有时间戳和值的数据地图。我会每隔几个小时将时间戳放入单个时间戳范围。

也许每 3 小时一次:

Statistics
--- Video1
------ Plays
--------- TimestampRangeStart
--------- Play Count
--------- TimestampRangeStart
--------- Play Count
--------- TimestampRangeStart
--------- Play Count

然后,您可以查询TimestampRangeStart > 7 days ago的所有视频,以检索上周播放过的所有视频的列表。这将返回文档,然后客户端您可以汇总过去 7 天内所有范围的播放计数。

如果您担心 Firestore 文档中的空间,您可以考虑仅在有视图时才添加地图条目,因此如果没有人观看视频,则无需担心条目。或者,您可以扩大范围。

最新更新