Firestore 按字符串键查询文档

我有一个像这样的 firestore 数据库结构;

http://img3.sycdn.imooc.com/64649f200001382906530198.jpg

我如何查询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。


我错过了什么吗?


神不在的星期二
浏览 127回答 2
2回答

凤凰求蛊

您的文档的结构方式,您尝试做的事情是不可能的。如果您还不知道地图属性的名称,则无法按地图属性进行查询。地图属性的名称也必须在所有文档中保持一致。在文档的顶层,您显然有一个与文档具有相同 id 的字段,它是一个地图。我完全不清楚为什么要在文档中使用一个地图字段。在我看来,您不想要一张地图,而是希望该地图的所有字段都是文档字段。这将允许您执行您询问的查询。也许您在填充文档时犯了错误。

牛魔王的故事

这个有可能。尝试更改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)        }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java