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

Flutter中如何使用Dart访问并获取Firestore的子集合数据?

Firestore子集合数据检索解决方案

相关结构参考:
集合结构1
集合结构2
集合结构3

Firestore访问子集合遵循父集合/父文档ID/子集合的路径规则,以下是不同开发平台可直接复用的代码示例:

Web/Node.js(JavaScript SDK)

已知父文档ID,查询单个父文档下的Running子集合

import { getFirestore, collection, getDocs } from "firebase/firestore";

const db = getFirestore();
// 替换占位内容为你实际的父集合名、父文档ID
const runningCollectionRef = collection(db, "替换为父集合名", "替换为对应父文档ID", "Running");

// 拉取子集合下所有文档数据
getDocs(runningCollectionRef)
  .then((querySnapshot) => {
    querySnapshot.forEach((doc) => {
      // 输出文档ID和文档数据
      console.log(doc.id, " => ", doc.data());
    });
  })
  .catch((error) => {
    console.error("数据检索失败:", error);
  });

未知父文档ID,查询所有父文档下的Running子集合(集合组查询)

import { collectionGroup, getDocs } from "firebase/firestore";

const runningGroupQuery = collectionGroup(db, "Running");
getDocs(runningGroupQuery)
  .then((querySnapshot) => {
    querySnapshot.forEach((doc) => {
      console.log(doc.id, " => ", doc.data());
      // 可通过doc.ref.parent.parent获取当前文档所属的父文档实例
    });
  })

Flutter 平台代码示例

import 'package:cloud_firestore/cloud_firestore.dart';

Future<void> getRunningSubCollectionData() async {
  QuerySnapshot querySnapshot = await FirebaseFirestore.instance
      .collection('替换为父集合名')
      .doc('替换为对应父文档ID')
      .collection('Running')
      .get();

  // 遍历子集合下的所有文档
  for (var doc in querySnapshot.docs) {
    print(doc.data());
  }
}

Android Kotlin 平台代码示例

val db = FirebaseFirestore.getInstance()
db.collection("替换为父集合名")
    .document("替换为对应父文档ID")
    .collection("Running")
    .get()
    .addOnSuccessListener { queryResult ->
        for (document in queryResult) {
            Log.d("FirestoreData", "${document.id} => ${document.data}")
        }
    }
    .addOnFailureListener { error ->
        Log.w("FirestoreError", "检索数据失败", error)
    }

注意事项

  • 所有代码中的占位内容需要替换为你实际业务中的父集合名称、对应父文档ID
  • 子集合支持和普通集合完全一致的条件查询语法,可直接追加where、orderBy、limit等条件筛选数据
  • 使用集合组查询前需要先在Firebase控制台为Running子集合创建对应索引,查询报错时可直接点击报错信息中的链接跳转创建,等待索引生成完成即可正常查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:05