gpt4 book ai didi

Android Firestore 查询获取包含搜索值的文档的 id

转载 作者:行者123 更新时间:2023-11-29 16:41:58 25 4
gpt4 key购买 nike

Firestore database image

您好,我刚刚尝试使用 Firestore。我在获取文档 ID 时遇到了一些问题。

问题是,我想获取其中包含值(蓝色框)的文档 ID(红色框)。

我使用以下查询:

collection("mychannel").whereEqualTo("74wRU4xHrcV9oWAXEkKeRNp41c53")

但没有给出结果。

谢谢!

最佳答案

official documentation :

Although Cloud Firestore can store arrays, it does not support querying array members or updating single array elements.

所以您没有办法可以使用以下查询:

collection("mychannel").whereEqualTo("74wRU4xHrcV9oWAXEkKeRNp41c53")

如果您只想获取整个 userId 数组,您需要像这样遍历 Map:

collection("mychannel").document("1fReXb8pgQvJzFdzpkSy").get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Map<String, Object> map = document.getData();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().equals("userId")) {
Log.d("TAG", entry.getValue().toString());
}
}
}
}
}
});

但是请注意,即使 userId 对象作为数组存储在数据库中,entry.getValue() 返回的也是一个 ArrayList,而不是一个数组

所以输出将是:

[74wRU4xHrcV9oWAXEkKeRNp41c53]

更好的方法是考虑这种替代数据库结构,其中每个用户 ID 都是映射中的键并且所有值都为真:

userId: {
"74wRU4xHrcV9oWAXEkKeRNp41c53": true,
"AdwF...": true,
"YsHs...": true
}

关于Android Firestore 查询获取包含搜索值的文档的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264063/

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