jus*_*820 39 database firebase google-cloud-firestore
在Firestore中,如何获取集合中的文档总数?
例如,如果我有
/people
/123456
/name - 'John'
/456789
/name - 'Jane'
Run Code Online (Sandbox Code Playgroud)
我想查询我有多少人并获得2.
我可以对/ people进行查询然后得到返回结果的长度,但这似乎是浪费,特别是因为我将在更大的数据集上执行此操作.
Dan*_*ath 34
您目前有3个选项:
这基本上就是你提到的方法.从集合中选择全部并在客户端计数.这适用于小型数据集,但如果数据集较大,显然不起作用.
使用此方法,您可以使用云功能更新计数器,以便从集合中添加和删除每个添加和删除.
这适用于任何数据集大小,只要添加/删除仅以小于或等于每秒1的速率发生.这为您提供了一个单独的文档,可以立即为您提供几乎当前的计数.
您可以在客户端中添加或删除文档的同时更新计数器,而不是使用云功能.这意味着计数器也是最新的,但您需要确保在添加或删除文档的任何位置包含此逻辑.
与选项2一样,如果要超过每秒,则需要实现分布式计数器
聚合是可行的方法(firebase 函数看起来像是更新这些聚合的推荐方法,因为客户端向您可能不希望公开的用户公开信息)https://firebase.google.com/docs/firestore/solutions/aggregation
另一种方式(不推荐)不适合大型列表,需要下载整个列表: res.size 像这个例子:
db.collection("logs")
.get()
.then((res) => console.log(res.size));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19856 次 |
| 最近记录: |