database - 如何使用 Cloud Firestore 计算集合中文档的数量

标签 database firebase google-cloud-firestore

<分区>

在 Firestore 中,如何获取集合中的文档总数?

例如如果我有

/people
    /123456
        /name - 'John'
    /456789
        /name - 'Jane'

我想查询我有多少人,得到2。

我可以对/people 进行查询,然后获取返回结果的长度,但这似乎是一种浪费,尤其是因为我将在更大的数据集上执行此操作。

最佳答案

您目前有 3 个选择:

选项 1:客户端

这基本上就是您提到的方法。从集合中选择所有并在客户端计数。这对于小型数据集来说效果很好,但如果数据集较大,则显然不起作用。

选项 2:写入时尽力而为

通过这种方法,您可以使用 Cloud Functions 为集合中的每次添加和删除更新计数器。

这适用于任何数据集大小,只要添加/删除仅以小于或等于每秒 1 次的速率发生。这为您提供了一个可供阅读的文档,以立即为您提供几乎最新的计数。

如果需要超过每秒1个,需要实现distributed counters per our documentation .

选项 3:写入时间精确

在您的客户端中,您可以在添加或删除文档的同时更新计数器,而不是使用 Cloud Functions。这意味着计数器也将是最新的,但您需要确保在添加或删除文档的任何地方都包含此逻辑。

和选项 2 一样,如果你想超过每秒,你需要实现分布式计数器

关于database - 如何使用 Cloud Firestore 计算集合中文档的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553314/

相关文章:

database - 多个值的结果子查询 - SQL

database - 寻找图形数据库

android - ContentValues 数组中的重复 ContentValues

android - Crashlytics 自定义键未出现在崩溃中

firebase - 在Flutter中从Firebase FireCloud接收数据时,不会执行StreamBuilder中的快照代码

database - Django - 设计模型关系 - 管理界面和内联

Angular 6 - '"/node_modules/firebase/index "' has no exported member ' 函数'

android - db.collection().document().get() 从不返回 null

javascript - 当 Firestore 中集合中的所有文档被删除时返回所有文档

ios - TableView 在顶部添加来自 firestore 的 newScore,即使它不是最高分