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

如何获取Firestore嵌套随机文档下的teacher与advisor字段值

核心错误原因

你现有代码存在3处逻辑错误:

  • doc = doc_ref.get 缺少方法调用的括号,且该行属于冗余代码,未参与后续查询逻辑
  • 调用doc_ref.collection('school').document()时不传参数会生成全新的随机文档ID,指向不存在的空文档,而非你已有的存量随机文档;后续额外调用的collection()无意义,不存在对应层级的嵌套集合
  • stream()返回的是文档快照迭代对象,不能直接调用to_dict()方法,需要遍历迭代器拿到单个文档后再做格式转换

修复后代码

import json

# 定位到ppl/1下的school集合
school_ref = db.collection('ppl').document('1').collection('school')
result = []

# 遍历school下所有随机生成的文档
for doc_snap in school_ref.stream():
    doc_data = doc_snap.to_dict()
    # 提取jobname下的目标属性
    if 'jobname' in doc_data:
        result.append({
            'teacher': doc_data['jobname'].get('teacher'),
            'advisor': doc_data['jobname'].get('advisor')
        })

# 转换为JSON格式
document_output = json.dumps(result, ensure_ascii=False)
print(document_output)

额外说明

如果只需要取school集合下的任意1个文档的属性,可以在遍历前加limit(1)减少查询量:

for doc_snap in school_ref.limit(1).stream():
    # 后续逻辑和上面一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:06:04