Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 我如何';滤入';firestore数据满足';包含';条件_Firebase_Android Studio_Google Cloud Firestore_Google Cloud Functions - Fatal编程技术网

Firebase 我如何';滤入';firestore数据满足';包含';条件

Firebase 我如何';滤入';firestore数据满足';包含';条件,firebase,android-studio,google-cloud-firestore,google-cloud-functions,Firebase,Android Studio,Google Cloud Firestore,Google Cloud Functions,当City节点具有确切的值(“在本例中为Noida”)时,此查询工作,但我希望检索“City”包含所需数据的所有数据 例如: 当城市=诺伊达 这个案子正在运作中。 我想做的是 当城市=诺伊达sec-32 如果我输入Noida,它仍然会搜索Noida sec-32,我认为你不能直接实现它。但我可以给你一个建议。您可以向文档中添加另一个字段,如“扇区” 你可以在里面存放城市郊区的东西 例如,您可以使用city=“noida”和sector=“sector 32” 像这样,您可以查询城市,然后获取扇区

当City节点具有确切的值(“在本例中为Noida”)时,此查询工作,但我希望检索“City”包含所需数据的所有数据

例如: 当城市=诺伊达 这个案子正在运作中。 我想做的是

当城市=诺伊达sec-32
如果我输入Noida,它仍然会搜索Noida sec-32,我认为你不能直接实现它。但我可以给你一个建议。您可以向文档中添加另一个字段,如“扇区” 你可以在里面存放城市郊区的东西

例如,您可以使用city=“noida”和sector=“sector 32”

像这样,您可以查询城市,然后获取扇区
也是。

Firestore中没有查询子字符串的查询

但是对于小型数据集有一个解决方法,它包括查询所有数据并保存在一个变量中(在您的例子中,获取所有城市的名称),然后使用
contains()
方法,如下所示:

Query query = fireStore.collection("Requests");
String str1 = document.getString("City");
String str2 = "Noida";
boolean b = str1.toLowerCase().contains(str2.toLowerCase());

如果你打印b的值,如果它匹配,它将返回true,如果不是false。但是上面的例子只适用于小的数据集,因为它对于大的数据集并不有效。在这种情况下,正如建议的那样,您可以使用第三方搜索服务,如。

您是否尝试过利用?这总是按数组数据类型进行过滤。不,这是另一回事,这为我提供了firebase中每个节点的同名值。谢谢您的时间。您在一个小数据集中考虑了多少个数据项?这只适用于小数据集,因为复杂度为n^2,因此如果有1000个元素,复杂度将为1000000。根据我的说法,少于100个元素将被视为小数据集,因为它将具有100000次读取的复杂性。谢谢,如果我的回答对你有用的话,你能接受吗?哦,很抱歉,如果你认为这个问题对其他人有帮助的话,你能把它标出来吗
Query query = fireStore.collection("Requests");
String str1 = document.getString("City");
String str2 = "Noida";
boolean b = str1.toLowerCase().contains(str2.toLowerCase());