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

如何在Firebase Cloud Firestore中获取集合文档列表且不获取全部字段?

如何获取Cloud Firestore指定集合下的文档列表

以下是不同开发环境下获取集合文档列表(包含文档ID及数据)的实现代码,涵盖常见场景:

Web SDK(JavaScript)

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

async function getCollectionDocs(db) {
  const colRef = collection(db, "你的集合名称");
  const querySnapshot = await getDocs(colRef);
  const docsList = [];
  querySnapshot.forEach((doc) => {
    docsList.push({
      id: doc.id,
      ...doc.data()
    });
  });
  return docsList;
}

Android SDK(Kotlin)

val db = Firebase.firestore
db.collection("你的集合名称")
    .get()
    .addOnSuccessListener { result ->
        val docsList = mutableListOf<Map<String, Any?>>()
        for (document in result) {
            val docData = document.data.toMutableMap()
            docData["id"] = document.id
            docsList.add(docData)
        }
        // 在此处理获取到的文档列表
    }
    .addOnFailureListener { exception ->
        // 处理请求失败逻辑
    }

iOS SDK(Swift)

let db = Firestore.firestore()
db.collection("你的集合名称").getDocuments { (querySnapshot, error) in
    guard let documents = querySnapshot?.documents else {
        print("获取文档失败: \(error?.localizedDescription ?? "未知错误")")
        return
    }
    let docsList = documents.map { doc in
        var data = doc.data()
        data["id"] = doc.documentID
        return data
    }
    // 在此处理文档列表
}

Python SDK

import firebase_admin
from firebase_admin import firestore

# 初始化Firebase(仅需执行一次)
firebase_admin.initialize_app()

db = firestore.client()
col_ref = db.collection("你的集合名称")
docs = col_ref.stream()

docs_list = []
for doc in docs:
    doc_data = doc.to_dict()
    doc_data["id"] = doc.id
    docs_list.append(doc_data)

# 输出或处理文档列表
print(docs_list)

若需获取嵌套子集合的文档

如果你的目标是获取父文档下子集合的内容,可通过遍历父集合文档再逐个拉取子集合数据实现(以Web SDK为例):

async function getNestedDocs(db) {
  const parentColRef = collection(db, "父集合名称");
  const parentSnapshot = await getDocs(parentColRef);
  const nestedDocs = [];
  
  for (const parentDoc of parentSnapshot.docs) {
    const subColRef = collection(parentDoc.ref, "子集合名称");
    const subSnapshot = await getDocs(subColRef);
    
    subSnapshot.forEach((subDoc) => {
      nestedDocs.push({
        parentId: parentDoc.id,
        subId: subDoc.id,
        ...subDoc.data()
      });
    });
  }
  return nestedDocs;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:54:26