为了账号安全,请及时绑定邮箱和手机立即绑定

Firestore 按字符串键查询文档

Firestore 按字符串键查询文档

神不在的星期二 2023-05-17 17:32:02
我有一个像这样的 firestore 数据库结构;我如何查询auctions集合中具有给定值的所有文档cargoOwnerId?com.google.firebase:firebase-firestore:20.2.0我在我的项目中使用。我在这里查看了堆栈溢出的类似问题,但没有成功。当我运行下面的代码时似乎没有任何效果FirebaseFirestore.getInstance().collection("auctions").whereEqualTo("cargoOwnerId","ZkYu6H6ObiTrFSX5uqNb7lWU7KG3").get().addOnCompleteListener(task -> {     Log.d("Logging", "Size: " + task.getResult().size());});ZkYu6H6ObiTrFSX5uqNb7lWU7KG3我希望返回包含as的所有文档的列表,cargoOwnerId但它根本不返回任何内容。大小为 0。我错过了什么吗?
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您的文档的结构方式,您尝试做的事情是不可能的。如果您还不知道地图属性的名称,则无法按地图属性进行查询。地图属性的名称也必须在所有文档中保持一致。

在文档的顶层,您显然有一个与文档具有相同 id 的字段,它是一个地图。我完全不清楚为什么要在文档中使用一个地图字段。在我看来,您不想要一张地图,而是希望该地图的所有字段都是文档字段。这将允许您执行您询问的查询。也许您在填充文档时犯了错误。


查看完整回答
反对 回复 2023-05-17
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

这个有可能。


尝试更改task.getResult().size()为task.size()


例子:


db.collection("auctions")

        .whereEqualTo("cargoOwnerId","ZkYu6H6ObiTrFSX5uqNb7lWU7KG3")

        .get()

        .addOnSuccessListener { documents ->


            Log.d("Logging", "Size: " + documents.size());



            for (document in documents) {

                Log.d(TAG, "${document.id} => ${document.data}")


            }

        }

        .addOnFailureListener { exception ->

            Log.w(TAG, "Error getting documents: ", exception)

        }


查看完整回答
反对 回复 2023-05-17
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信