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

Kotlin Firestore如何获取集合内包含子集合的所有文档ID

问题原因

你当前的代码无法返回permisos文档ID,是因为Firestore中仅包含子集合、无任何显式存储字段的文档属于虚拟占位文档,这类文档本身没有实际存储的文档数据,默认的集合get()查询只会返回有实际字段数据的文档,因此不会将这类占位文档纳入查询结果。你现有代码的逻辑本身没有问题,只是受限于Firestore的默认查询规则。

解决方案

方案1:移动端/客户端场景(推荐,改动最小)

给所有仅含子集合的文档添加任意一个占位字段即可,比如新增is_container: true的布尔字段,哪怕字段值为空字符串都可以,只要文档有实际存储的内容,就能被正常查询到。
添加占位字段后,你现有的代码不需要做任何修改,就能返回全部3个文档的ID。

方案2:服务端场景(无需修改数据库数据)

如果是在服务端环境运行,可以直接使用Firebase Admin SDK提供的listDocuments()方法,该方法会返回指定集合下的所有文档,包括无字段的虚拟占位文档,Kotlin服务端示例代码如下:

val ubicacionRef = db.collection("UbicacionTP")
val docRefs = ubicacionRef.listDocuments()
val docIds = docRefs.map { it.id }
println(docIds)

注意:客户端SDK出于安全和性能限制,未提供listDocuments()接口,因此该方案仅适用于服务端环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 05:27:04