当前位置: 首页 > 知识库问答 >
问题:

在Firestore中获取查询的大小

段干弘毅
2023-03-14

如何从拥有数千个文档的Firestore集合中有效地获得整个查询大小?

在我的例子中,我通过几种不同的规则查询文档:

  • 开始日期
  • 结束日期
  • 位置ID
  • 关键字

我可以使用云函数进行与前面相同的查询,但没有限制,然后得到它的大小,但有没有更有效的方法做到这一点?查询大小可能是数千个文档,那么这样做是否存在性能问题?在这种情况下,帐单是如何工作的?

如果。我的查询是1500个文档,是否需要1500个读取操作来获得这个查询的大小?

还有其他主题建议使用计数器来获取集合的大小,但这并不适合我的方法,因为大小取决于上面所述的用户搜索参数。

欢迎针对此问题的所有建议!

共有1个答案

陶炫明
2023-03-14

如果在一个集合中有数千个文档,则可能需要经常更新计数器。在Cloud Firestore中,您每秒只能更新一次单个文档,这对于一些高流量应用html" target="_blank">程序来说可能太低了。

查询大小可能是数千个文档,那么这样做是否存在性能问题?

不会的。根据关于Firestore计数器的官方文档,您可以使用分布式计数器:

在这种情况下,帐单是如何工作的?

如果您想要一次读取整个集合,您将为每次读取的文档支付读取操作的费用。

我的查询是1500个文档,是否需要1500个读取操作来获得这个查询的大小?

有关存储计数器的更多详细信息,请参阅我在这篇文章中回答的最后一部分:

作为个人提示,不要在Cloud Firestore中存储此类计数器,因为每次增加或减少计数器都会花费操作。免费将此计数器托管在Firebase Realtime数据库中。

 类似资料:
  • 我有一个应用程序,返回一个保健食品的列表。将有大约10000-20000食品(文件)在产品集合。 这些食物由多个字段使用查询。这可能是类别、子类别,当用户在搜索栏中搜索时,它是关键字数组上的arrayContains。 但是在这个例子中,他们说要使用计数器,这似乎并不实际,因为当用户搜索时,我使用的是查询关键字,当用户过滤时,我使用的是类别和子类别的混合。 谢谢

  • 最近我一直在玩Geohash和FiRecovery。我的待办事项场景是收集文档(餐厅),每个餐厅都会有发送到的Geohash列表。 我想避免在文档餐厅中添加地理位置,因为文档可能比它应该的大很多倍。 最初的想法是将所有地理哈希都放在餐厅文档的子集合中,但我发现不可能在文档的子集合中执行查询。 第二个想法是将Geohash提取到交付区域集合的顶层。 这个场景中的问题是,我将返回一个餐厅名称列表,然后

  • 我在使用firestore查询“wherequalto”时遇到了麻烦。我试图从一个名为“参与者”的集合中获取图像,但当文档不存在时,应该使用else语句并移动到更新文档的下一个活动。但是在onComplete侦听器(即任务)中从集合中查询文档时,文档没有退出,而是代码运行到if(Task.issucessful){}中,并且没有使用else语句。我的代码:有谁能帮我吗?谢谢

  • 问题内容: 我正在尝试在Firestore查询中实现逻辑OR运算符。 但这不是实现OR的正确方法。 我希望所有具有“制造商,检查者或批准者”角色的用户。 如何在Firestore查询中实施OR?Doc中没有任何内容。 问题答案: 编辑(2019年11月) 现在,CloudFirestore支持“IN”查询(公告),该查询使您可以执行一种OR查询,以查找具有相同字段中几个值之一的文档。 例如,上面的

  • Firestore文档称: 使用子句进行查询。在这种情况下,应该将查询拆分为大于查询和小于查询。例如,尽管不支持查询子句,但可以通过组合两个查询获得相同的结果集,一个查询使用子句,另一个使用子句。 我需要抓住用户在一定的年龄范围,所以这似乎是一个伟大的方式来抓住相关的,但不幸的是,我显然不明白如何使用这一点。 这不起作用,当我使用时,我会得到错误。 更新:显然他们没有专门的SWIFT文档。 我得到

  • 我有文档,其中包含子集合。现在,我想获取子集合中至少有一项的所有项目。这可能吗? 类似于: < code>getDocs(collection(getDB()," Projects)),其中(" Items.size ","