【问题标题】:Select every other Document in Firestore Collection选择 Firestore 集合中的所有其他文档
【发布时间】:2018-07-20 15:38:21
【问题描述】:

我想知道如何检索 Firestore 集合中的所有其他文档。我有一组包含日期字段的文档。我想按日期对它们进行排序,然后从排序集合中的每个 X 大小的块中检索 1 个文档。我大约每 10 秒添加一个新文档,我试图在前端显示历史数据,而无需下载这么多记录。

【问题讨论】:

  • 这取决于您要显示的文档中的数据量。如果您尝试显示图表的时间序列数据,我们可以通过将新的 Cloud Firestore 写入流式传输到 Cloud Dataflow / Apache Beam(使用 Cloud Functions)来执行类似的操作。
  • 你签出firebase.google.com/docs/firestore/query-data/query-cursors 了吗?不是返回所有其他文件而是返回 10 秒或更长时间后的下一个文件对您有用吗?您可能可以使用 limit(1) 和 startAfter() 的某种组合来执行此操作。

标签: database firebase google-cloud-platform google-cloud-firestore data-modeling


【解决方案1】:

当然可以,只是需要提前计划。

随机抽样

我们称之为“随机采样”,因此您需要在编写文档时确定采样率。假设您要对每 10 个文档中的大约 1 个文档进行采样(但严格来说不是每 10 个文档中的 1 个)。

编写文档时,添加一个名为sample-10 的字段并将其设置为random(1,10)。在查询时将.where("sample-10", "=", random(1,10)) 添加到您的查询中。

非随机抽样

当你的写作来源是分布式的(例如许多移动设备)时,这会更难,所以我不会在这里讨论。

如果写入来自单一来源,例如,您可能正在绘制来自单一来源的传感器数据。只需增加放入 sample-10 模 10 的值就更容易了。

其他采样率

对于n 的不同采样率,您需要单独创建一个sample-n

【讨论】:

    猜你喜欢
    • 2021-07-27
    • 2020-09-08
    • 2018-05-09
    • 2018-12-31
    • 2020-01-22
    • 2021-02-03
    • 2018-11-01
    相关资源
    最近更新 更多