我正在制作一个应用程序,其中存储了用户使用我的应用程序学习了多少分钟。我的Firestore数据库以“用户”集合开头,每个用户都有自己的文档,该文档由Auth中生成的userID命名。
我的问题是,如果我阅读了其userID文档,该文档的子集合中包含很多文档,那么该ID是否算作一次读取,还是也计算了子集合中的文档数量?
先谢谢您。
答案 0 :(得分:1)
托雷温(Torewin)的回答在很大程度上是正确的,但它缺少一个重要的细节。它说:
如果您检索文档;随处可见,都算是读
这并非完全正确。缓存的文档读取不作为读取计费。这是Firestore客户端SDK的一项重要功能,可帮助降低结算费用。如果使用默认的“源”获取单个文档(source options是“缓存”或“服务器”或“默认”),则将首先查询缓存,如果缓存是新鲜的,则获取该文档无需付费。
查询结果也是如此。如果文档来自缓存,则该读取没有计费。但是,每个查询至少要读取1个文档。
我不确定托勒温在评论中的意思是:“他们建议您进行多次读取而不是一次大读取,因为这样可以省钱。”就计费而言,所有读取均具有相同的“大小”,仅考虑读取本身的成本。该文档的大小仅与使用互联网出口费用相关,documentation on pricing。
值得注意的是,文档不能“包含”其他文档。文档包含在集合或子集合中。这些收藏只有一条描述他们居住地的“路径”。没有“父”文档就可以存在子集合。如果文档不存在,但是在其下组织了一个集合,则文档ID在控制台中以斜体显示。使用客户端API删除文档时,不会删除其子集合。在这方面,删除被称为“浅”。
答案 1 :(得分:0)
如果您指的是从FireStore访问Document
(在本例中为您生成的UserID)的1读?
我想答案是肯定的。
任何查询或从Firestore读取都只会拉出您要映射到的引用。例如,如果您在用户->用户ID->第三文档中抓取第三文档,则仅返回第三文档。该集合中没有其他文档,也没有userID之外的任何集合。
是回答您的问题还是在问完全不同的问题?
以供参考:https://firebase.google.com/docs/firestore/pricing#operations
编辑:将从查询中提取的每个单个文档收费。例如,如果您提取父集合(其中有6个文档),则将对所有6个文档收费。这个想法是只获取您需要的文档或使用游标,让您恢复长时间运行的查询。例如,如果您只希望文档在特定日期使用数据(如果您的数据是这样设置的),则只检索该特定文档,而在其他日期不检索集合中的所有文档。 。
一种简单的思考方式是:如果您检索文档;在任何地方,它都算作读取。