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

读取包含子集合的文档的Firestore计费

冯亮
2023-03-14

我正在制作一个应用程序,它存储用户使用我的应用程序学习了多少分钟。我的FiRecovery数据库以“用户”集合开始,每个用户都有自己的文档,该文档由他们在Auth中生成的用户ID命名。

我的问题是,如果我读取他们的userID文档(其子集合中有许多文档),这是算作一次读取,还是也算作子集合中的文档数?

提前感谢。

共有2个答案

易和怡
2023-03-14

如果您指的是从FireStore访问< code >文档(在本例中为您的generatedUserID)是否为1 read?

我想答案是肯定的。

任何来自Firestore的查询或读取只会提取您映射到的参考。例如,如果您在用户中获取第三个文档-

这是否回答了你的问题,或者你是在问一些完全不同的东西?

参考:https://firebase.google.com/docs/firestore/pricing#operations

编辑:从查询中提取的每个文档都将被收费。例如,如果您提取父集合(其中有6个文档),您将为所有6个文档付费。想法是只抓取你需要的文档或使用光标,让你恢复一个长时间运行的查询。例如,如果您只希望文档与特定日期的使用数据有关(如果您的数据是这样设置的),那么您只需要检索该特定文档,而不需要检索集合中其他日期的所有文档。

一种简单的思考方式是:如果你检索到一个文档;无论在哪里,它都算作一次阅读。

陆高峰
2023-03-14

Torewin的答案基本上是正确的,但它缺少一个重要的细节。它说:

如果您检索文档;在任何地方,它都算作读取

这并不完全正确。缓存的文档读取不会计费为读取。这是FiRecovery客户端SDK的一个重要功能,有助于降低计费成本。如果您使用源选项缓存(选项是“缓存”或“服务器”或“默认”)获取单个文档,则会首先查询缓存,您无需计费即可获取文档。当应用程序离线时,缓存也用于查询结果。

查询结果也是如此。如果某个文档由于某种原因来自缓存,则不会对该读取进行计费。

我不确定Torewin在评论中这样说是什么意思:“他们建议你进行多次读取,而不是一次大读取,因为这样你会省钱。”就计费而言,所有读取都是相同的“大小”,只考虑读取本身的成本。文档的大小只对互联网出口的使用成本有影响,对此有定价留档。

值得注意的是,文档不能“包含”其他文档。文档包含在集合或子集合中。这些集合只是有一个描述它们所在位置的“路径”。子集合可以在没有“父”文档的情况下存在。当一个文档不存在,但在它下面组织了一个集合时,文档ID在控制台中以斜体显示。当您使用客户端API删除一个文档时,它的子集合都不会被删除。在这方面,删除被称为“浅”。

 类似资料:
  • 我正在使用Java开发一个Android应用程序,我使用firestore数据库,我有一个名为用户位置的集合,其结构类似于照片: 分贝 我的问题是,当一个用户改变他的位置或一个新用户进入一个已经存在的位置(其他用户有相同的位置)时,它会创建一个新文档(如在“oran, algerie”中)。当我添加新用户并更新文档时,我想使用,但问题是我无法以正常方式检索根集合的所有文档: 它返回null。我尝试

  • 我有一个包含10个文档的产品根集合。每个文档都有100个文档的子集合,没有其他字段。 现在如果我阅读产品收藏的文件 将收取多少次读取费用,由于我正在获取具有10个文档的产品集合的文档,我将收取10次读取费用?或者每个文档都有100个文档的子集合,因此我将收取10*100 =1000文档读取费用?

  • 我有一个集合,其中每个文档都有一些公共数据,如用户名和字符级别,但也有一个私有子集合,它有字符的黄金量。 现在我可以查询特定文档的characters collection,但是子collection数据不会返回,所以我需要执行二次查询来检索它。

  • 如何从Flatter firestore读取子集合。我正在使用cloud\u firestore。我正在成功地将数据添加到firestore中,但无法检索它(已尝试,但失败)。我想检索名为product Firestore collection的子集合 我试过了,我没有文档ID,因为它是从fiRecovery自动生成的:

  • 在我的集合的SnapshotListener中,我使用以下命令循环遍历文档: 在 for 循环中的每个文档中,让我们称之为 ,我在 Cloud Firestore 上还有另一个文档集合。我想检索内子集合中的所有文档(每个文档只有一个字符串字段)。我能够做一个来获取本身,我用它来获取字符串字段,但我不知道如何获取其子集合中的文档。

  • 假设我有这种结构 其中和是集合,和是文档 有没有一种方法可以通过一个查询获得根文档中包含的所有内容<如果我这样问 我只得到字段。我想要的是B的所有文件 我基本上希望我的查询返回 是否可能或者我真的需要对每个集合进行多个查询:/? 假设我有一个代表用户配置文件的非常深的嵌套集合树,我的成本会像地狱一样上升,因为每次我加载用户配置文件时,我都有一个读取请求的乘数其中N是我的树的深度: /.