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);
}
}
}
});
123
456
789
//and so on
记住,document.get("card")
并不会返回一个 array
,它返回的是一个 ArraList
。
如果你想使用 whereEqualTo()
方法进行查询,那我建议你稍微改一下你的数据库结构。你的数据库结构应该像这样:
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日:
根据有关数组成员资格的更新文档,现在可以使用whereArrayContains()
方法基于数组值过滤数据。一个简单的例子如下:
CollectionReference citiesRef = db.collection("cities");
citiesRef.whereArrayContains("regions", "west_coast");
CollectionReference
。虽然Cloud Firestore可以存储数组,但它不支持查询数组成员或更新单个数组元素。您无法使用实际的数据库结构实现所需的功能。您可以改用我的数据库结构。当您遍历列表时,看看特定的键是否存在,对吧? - Alex Mamo