gpt4 book ai didi

Android Firestore,查询数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:51 25 4
gpt4 key购买 nike

enter image description here 我想从上面的数据库中查询突出显示的值

我的代码不完整,我不知道如何完成查询。我想知道整个集合中是否存在 123,456,789,像一个普通的查询 .whereEqualTo("address","P18/A CIT Road Ananda Palit"); 会给我第三个文件,在这里我想查询 card

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);
}
}
}
});

输出将是:

123
456
789
//and so on

请记住,document.get("card") 不返回一个数组,它返回一个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 日编辑:

根据有关 array membership 的更新文档,现在可以使用 whereArrayContains() 方法根据数组值过滤数据。一个简单的例子是:

CollectionReference citiesRef = db.collection("cities");
citiesRef.whereArrayContains("regions", "west_coast");

This query returns every city document where the regions field is an array that contains west_coast. If the array has multiple instances of the value you query on, the document is included in the results only once.

关于Android Firestore,查询数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49657098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com