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

Firebase CollectionGroup读取指定对象无结果的问题求助

Firebase CollectionGroup 查询无结果问题排查与解决

我有嵌套的CollectionGroup结构,想要从中读取一个特定对象,使用以下Firebase代码查询却未得到任何结果:

db.collectionGroup("Objekte")
  .whereEqualTo("timestamp",key.toString())
  .get()
  .addOnSuccessListener { doc->
    for (document : doc) {
        if(document != null)
        {
            Log.d("TAG", "DocumentSnapshot data: ${document.data}")
       } else{
            Log.d("TAG", "No such document")
       }
    }
}

数据库结构说明:存在多层嵌套集合,Objekte作为子集合分布在不同父文档下,目标字段timestamp以数值类型存储(日志输出的目标时间戳为:1672216119769)

问题原因与解决方法

  • 类型不匹配:代码中将key转为字符串(key.toString()),但数据库里的timestamp是长整型数值,字符串与数值无法匹配,导致查询无结果。需直接传入数值类型的key。
  • 缺失CollectionGroup索引:使用collectionGroup查询必须创建对应复合索引,需在Firebase控制台为Objekte集合的timestamp字段创建collectionGroup类型的索引。
  • 遍历语法错误:原代码循环for (document : doc)存在语法问题,正确写法应为遍历querySnapshot的文档列表。

修正后的代码

db.collectionGroup("Objekte")
  .whereEqualTo("timestamp", key) // 直接传入数值类型,无需转换为字符串
  .get()
  .addOnSuccessListener { querySnapshot ->
      if (querySnapshot.isEmpty) {
          Log.d("TAG", "未找到匹配的文档")
          return@addOnSuccessListener
      }
      for (document : querySnapshot.getDocuments()) {
          Log.d("TAG", "DocumentSnapshot data: ${document.data}")
      }
  }
  .addOnFailureListener { exception ->
      Log.d("TAG", "查询失败: ", exception)
  }

内容的提问来源于stack exchange,提问作者Captai-N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:35:43