Android Firestore,查询数组
我想从上述数据库中查询突出显示的值 我的代码不完整,我不知道如何完成查询。 我想知道整个收藏中是否有123456789, 类似于普通查询Android Firestore,查询数组,android,google-cloud-firestore,Android,Google Cloud Firestore,我想从上述数据库中查询突出显示的值 我的代码不完整,我不知道如何完成查询。 我想知道整个收藏中是否有123456789, 类似于普通查询。whereEqualTo(“地址”,“P18/a CIT Road Ananda Palit”)会给我第三份文件,这里我想查询卡片 CollectionReference ref = db.collection("company"); Query query = ref.whereEqualTo("card[]","???"); 要解决此问题,请使用以下代码
。whereEqualTo(“地址”,“P18/a CIT Road Ananda Palit”)
会给我第三份文件,这里我想查询卡片
CollectionReference ref = db.collection("company");
Query query = ref.whereEqualTo("card[]","???");
要解决此问题,请使用以下代码:
ref.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (DocumentSnapshot document : task.getResult()) {
List<String> list = (List<String>) document.get("card");
for (String item : list) {
Log.d("TAG", item);
}
}
}
});
请记住,document.get(“card”)
不会返回数组
,而是返回数组列表
如果您想使用whereEqualTo()
方法进行查询,那么我建议您稍微更改一下数据库。您的数据库结构应如下所示:
Firestore-root
|
--- company
|
--- companyDocumentId
|
--- address: "P18/A CIT Road Palit"
|
--- card
|
--- 123: true
|
--- 456: true
|
--- 789: true
Query = ref.whereEqualTo("card.123", true);
在这种情况下,您的查询应该如下所示:
Firestore-root
|
--- company
|
--- companyDocumentId
|
--- address: "P18/A CIT Road Palit"
|
--- card
|
--- 123: true
|
--- 456: true
|
--- 789: true
Query = ref.whereEqualTo("card.123", true);
编辑:
根据您的建议,查询应为:
Query = ref.whereEqualTo("card.E20040806709002620760CE82", true);
编辑2018年8月13日:
根据更新的文档,现在可以使用whererraycontains()
方法基于数组值过滤数据。一个简单的例子是:
CollectionReference citiesRef = db.collection("cities");
citiesRef.whereArrayContains("regions", "west_coast");
此查询返回每个城市文档,其中regions字段是包含west_coast的数组。如果数组中有您查询的值的多个实例,则结果中只包含一次文档
我想查询集合中是否存在123456789。。我正在做一个收集参考,而不是文件参考。我该怎么做。是的,我正在使用
CollectionReference
。尽管CloudFireStore可以存储数组,但它不支持查询数组成员或更新单个数组元素。使用实际的数据库结构无法实现所需的功能。你可以用我的。当你在列表中循环时,看看是否存在某个特定的密钥,对吗?谢谢我知道了,非常感谢alex。我将使用您的数据库结构。:)嘿,alexQuery=ref.whereEqualTo(“123”,真)代码>不起作用,这就是我们在对象中查询的方式吗?谢谢alex..我试过了,但有一段时间不起作用,结果我不得不修剪另一个函数返回的字符串。非常感谢你的帮助