You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何获取Firestore中所有文档对应子集合下的全部文档

Python读取Firestore指定顶层集合下所有user子集合数据的方案

前置准备

  • 先安装Firebase Admin Python SDK:pip install firebase-admin
  • 提前在Firebase控制台下载你的项目服务账号JSON密钥文件

实现方式(两种可选)

方式1:遍历顶层文档后逐个读取子集合

适用场景:需要同时获取顶层文档信息,或需要先对顶层文档做过滤

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# 初始化Firebase客户端
cred = credentials.Certificate("替换为你的服务账号密钥文件路径.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

# 替换为你自己的顶层集合名称
TOP_COLLECTION_NAME = "你的顶层集合名"

all_user_records = []
# 遍历顶层集合的所有文档
for top_doc in db.collection(TOP_COLLECTION_NAME).stream():
    # 读取当前顶层文档下的user子集合的全部文档
    for user_doc in top_doc.reference.collection("user").stream():
        # 组装数据,可按需保留文档ID等元信息
        record = user_doc.to_dict()
        record["user_doc_id"] = user_doc.id
        record["parent_top_doc_id"] = top_doc.id
        all_user_records.append(record)

# 打印所有查询结果
for record in all_user_records:
    print(record)

方式2:使用集合组查询(更高效)

适用场景:只需要获取所有user子集合的文档,无需遍历顶层集合

注意:首次使用集合组查询前,需要在Firestore控制台为user集合创建集合组索引,按照控制台弹出的提示创建即可,无需额外配置

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# 初始化Firebase客户端
cred = credentials.Certificate("替换为你的服务账号密钥文件路径.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

all_user_records = []
# 直接全局查询所有名为user的子集合
for user_doc in db.collection_group("user").stream():
    record = user_doc.to_dict()
    record["user_doc_id"] = user_doc.id
    # 通过引用层级获取对应的顶层文档ID
    record["parent_top_doc_id"] = user_doc.reference.parent.parent.id
    all_user_records.append(record)

# 打印所有查询结果
for record in all_user_records:
    print(record)

两种方案返回的结果结构完全一致,如果你需要对user文档的字段做条件过滤,直接在查询后添加where()方法即可,集合组查询也支持条件筛选。

内容的提问来源于stack exchange,提问作者ernest fokam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:27:06