Firebase Firestore获取Collection时是否自动拉取Sub Collection及读计数规则
Firestore 子集合查询与计费规则解答
- 子集合不会随父文档自动拉取,必须单独查询
Firestore 的所有查询默认都是 浅查询,仅返回你直接指定的查询目标的当前层级数据,不会自动递归拉取任何层级的子集合内容。
你提供的代码仅会拉取 posts 集合下的所有根 Post 文档数据,返回的每个 Post 文档仅包含自身定义的字段值,不会携带对应的 Ratings 子集合数据。如果需要获取某篇 Post 关联的评分数据,需要单独构造子集合查询:
// 声明指向 posts 集合的引用 final CollectionReference postsCollection = FirebaseFirestore.instance.collection("posts"); // 原代码:仅拉取 posts 集合下的所有根 Post 文档,不包含任何子集合数据 response = await FirebaseFirestore.instance .collection("posts") .get(); // 如需获取指定 Post 下的 Ratings 子集合数据,需要单独发起查询 final ratingResponse = await postsCollection .doc("目标Post的文档ID") .collection("ratings") .get();
- 读操作按实际返回的文档数单独计数,不会合并
无论你是否在同一段逻辑中查询父文档和子集合,读操作的计数都会分开统计:- 拉取1篇 Post 文档,计1次读操作
- 拉取该 Post 下的 Ratings 子集合时,返回N条评分文档就计N次读操作
- 总读操作数为 1 + N,不存在合并计数的规则
内容的提问来源于stack exchange,提问作者zerochill
相关产品推荐
相关产品推荐

