如何从具有数千个文档的Firestore集合中有效地获取整个查询的大小?
就我而言,我通过一些不同的规则查询文档:
然后,我将查询限制为仅显示50条记录,但是我需要获得没有此限制的查询的大小,因为这样分页才能在前端正确显示。
我可以使用云功能,该功能与之前的查询相同,但没有限制,然后获取它的大小,但是有没有更有效的方法?查询大小可能是成千上万的文档,所以这样做会不会有性能问题?在这种情况下,计费如何运作?
如果是。我的查询是1500个文档,是否会有1500次读取操作才能获得此查询的大小?
还有其他一些主题建议使用计数器来获取集合的大小,但这不适合我的方法,因为大小取决于上述用户的搜索参数。
欢迎对此问题提出所有建议!
答案 0 :(得分:3)
如果一个集合中有成千上万的文档,则可能需要经常更新计数器。在Cloud Firestore中,您只能每秒更新一次文档,这对于某些高流量的应用程序可能太低了。
查询大小可能是成千上万个文档,所以这样做会不会有性能问题?
不,不会。根据有关Firestore counter的官方文档,您可以使用分布式计数器:
要支持更频繁的计数器更新,请创建一个分布式计数器。每个计数器都是带有“碎片”子集合的文档,计数器的值是碎片值的总和。
这种做法可以帮助您实现所需的目标。
在这种情况下计费如何工作?
如果您想一次读取整个馆藏,则需要为每个读取的文档进行读取操作。
我的查询是1500个文档,是否会有1500次读取操作才能获得此查询的大小?
如果要遍历整个集合以获取文档数,是的。
有关存储计数器的更多详细信息,请参阅此 post 中答案的最后部分:
作为个人提示,请勿将这种计数器存储在Cloud Firestore中,因为每次您增加或减少计数器时,都会花费
read
或write
操作。将此计数器免费托管在Firebase Realtime
数据库中。