【问题标题】:Firestore collection countFirestore 收集计数
【发布时间】:2022-10-20 20:15:06
【问题描述】:

如何有效地计算大型 Firestore 集合中的文档。

显然,我不想获得整个收藏品并在前端进行计数,因为钱会飞涨。真的没有简单的 API,例如 db.collection('someCollection').count() 或类似的,但我们需要破解它吗?

【问题讨论】:

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


    【解决方案1】:

    (2022-10-20) 编辑:

    从现在开始,实际上可以计算集合中的文档或查询返回的文档,而无需保留计数器。因此,您可以使用新的 count() 方法计算文档,该方法:

    返回一个查询,该查询计算此查询的结果集中的文档。

    这一新功能是在今年的 Firebase 峰会上宣布的。请记住,此功能不会读取实际文档。所以根据official documentation

    对于 count() 等聚合查询,您需要为每批最多 1000 个与查询匹配的索引条目读取一个文档。对于匹配 0 个索引条目的聚合查询,读取一份文档的最低费用。

    例如,匹配 0 到 1000 个索引条目的 count() 操作按一个文档读取计费。对于匹配 1500 个索引条目的 count() 操作,您需要支付 2 次文档读取费用。


    真的没有简单的 api,例如 db.collection('someCollection').count() 或类似的

    不,那里没有。

    但我们需要破解它

    是的,我们可以使用一种解决方法来计算集合中的文档数量,即保留一个单独的计数器,每次将文档添加到集合中或从集合中删除时都应该更新该计数器。

    此计数器可以作为一个字段添加到 Firestore 中的文档中。但是,如果集合中的文档添加或删除非常频繁,那么这种解决方案可能会有点昂贵,在这种情况下我强烈建议您使用Realtime Database。在这种情况下,更新计数器时无需支付任何费用,而只需在阅读(下载)计数器时支付。而且由于它只是一个数字,因此您几乎无需支付任何费用。几年前,我什至写了一篇关于在 Firestore 中计数文档的解决方案的文章:

    【讨论】:

      猜你喜欢
      • 2021-12-03
      • 1970-01-01
      • 2019-10-06
      • 2019-10-10
      • 2022-01-15
      相关资源
      最近更新 更多