gpt4 book ai didi

android - 当 Android 中数组中的值超过 1 个时,Firestore whereArrayContains 不起作用

转载 作者:行者123 更新时间:2023-12-05 07:17:38 24 4
gpt4 key购买 nike

我有一个 Firestore 文档“users”,它有一个数组字段“languages”和“country”。每个用户都会说多种语言,因此对于一个用户来说是

user1,

languages: english, spanish, italian
country: "UK"
user2,
languages: english
country: "UK"

enter image description here enter image description here

我的查询如下:

   query = db.collection("users");
query = query.whereEqualTo("country", "UK");
query = query.whereArrayContains("languages", "English");
query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@NonNull QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if (e != null) {
return;
}
if (queryDocumentSnapshots != null) {
List<DocumentSnapshot> snapshotList = queryDocumentSnapshots.getDocuments();

for (DocumentSnapshot document : snapshotList) {
String country= document.getString("country");
Log.wtf(TAG, country);
}
} else {
Log.d(TAG, "Error getting documents: ");
}
}
});

结果是只返回“user2”的数据,因为它在数组语言中只有一个字段。尽管“user1”也有英语作为语言值,但不会返回此用户的数据。

我做错了什么?

enter image description here enter image description here

最佳答案

你需要像这样添加一个索引:

  • 国家 - 升序
  • 语言 - 数组

  1. 转到索引

enter image description here

  1. 完全像这样添加一个新索引:

enter image description here

关于android - 当 Android 中数组中的值超过 1 个时,Firestore whereArrayContains 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58720402/

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