首页 > 解决方案 > Firestore 按字符串键查询文档

问题描述

我有一个像这样的firestore db结构;

伊姆古尔

如何查询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());


});

我希望返回包含ZkYu6H6ObiTrFSX5uqNb7lWU7KG3as 的所有文档的列表,cargoOwnerId但它什么也不返回。大小为 0。

我错过了什么吗?

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


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

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


推荐阅读