Firebase Firestore读取计费咨询:DocID与where查询计费规则
Firestore读取计费相关问题解答
问题1:指定文档ID获取单个文档的计费
使用collection().doc(文档ID)获取单个文档(包括代码里的snapshots()监听),每次读取/快照更新都只计1次读取,和集合里的其他文档数量完全无关。Firestore会直接根据文档ID定位到目标文档,不会扫描整个集合,所以只会针对这一个文档计费。
你的示例代码:
StreamBuilder( stream: firestore .collection('users') .doc(auth.currentUser!.uid) .snapshots(),
这里的snapshots()是监听该用户文档的实时变化:初始加载文档计1次读取,之后每当这个文档有更新时,都会再计1次读取,每次都是单独的1次,不会涉及整个users集合的其他文档。
补充问题:where查询的计费与读取范围
.where()查询不会读取集合内所有文档,Firestore会根据查询条件(如果有对应索引的话)快速定位符合条件的文档;就算没有索引触发全集合扫描,也只是性能受影响,不会读取所有文档内容。- 计费是按查询返回的结果文档数计算,不是集合总文档数。举个例子:集合有1000个文档,
where查询返回10个,那初始查询计10次读取;后续监听时,只有当这10个文档有变化,或者有新文档符合条件加入结果集、已有文档不符合条件被移除时,才会对变化的文档计读取次数,不会按1000个文档计费。
内容的提问来源于stack exchange,提问作者EK5
相关产品推荐
相关产品推荐

