当前位置: 首页 > 知识库问答 >
问题:

检查Firestore中的任何文档是否包含子字符串[duplicate]

濮阳君浩
2023-03-14

我在Firestore中收集了大量带有随机ID的文档,每个文档都有两个字段,一个名称和一个描述。我想让我的应用程序允许用户输入一系列字符,然后向他呈现所有包含字符序列的文档,比方说名称字段。使用Firebase及其查询是否可行,如果可行,您能给我一个Kotlin或Java的代码示例吗?我知道有一些方法,如hasChild()child(“child name”).exists(),但由于我还不知道用户正在查找哪个文档,如果没有弄错,我就不能使用它们。

例如,如果我有3个文档的集合,它们有以下名称(“Mike”、“Michael”、“Dave”),并且用户输入了“MI”,我希望能够检索到名称为“Mike”和“Michael”的文档。

共有1个答案

丌官和泰
2023-03-14

如果要获取name字段以mi开头的所有文档,可以使用:

db.collection("users")
  .whereGreaterThanOrEqualTo("name", "mi")
  .whereLessThanOrEqualTo("name", "mi\uF7FF")
  .get()
  .addOnSuccessListener { documents ->
    for (document in documents) {
      Log.d(TAG, "${document.id} => ${document.data}")
    }
  }
    .addOnFailureListener { exception ->
        Log.w(TAG, "Error getting documents: ", exception)
    }

这里使用的\uf7ff值是存在的最后一个Unicode字符,因此:

  1. 根据其名称值对所有文档进行排序
  2. 查找以mi
  3. 开头的第一个文档
  4. 返回所有文档,直到它到达一个大于mi
  5. 的文档

有关这方面的更多内容,请阅读有关查询数据的Firebase文档。

我还建议检查一下这些相关问题:

  • Google FireStore:查询属性值的子字符串(文本搜索)
  • 使用查询的Cloud Firestore不区分大小写排序
 类似资料:
  • 问题内容: 我需要检查一个字符串是否包含汉字。搜索之后,我发现我必须在这种模式下查看正则表达式,但是我无法使正则表达式正常工作。 任何人都经历过这种情况?正则表达式正确吗? 问题答案: 作为讨论在这里,在Java 7(即正则表达式编译器符合要求RL1.2属性从UTS#18 Unicode的正则表达式 ),你可以使用下面的正则表达式匹配中国(当然,CJK)字符: 可以简单地理解为

  • 问题内容: 通常我希望有一种方法,但是似乎没有。 有什么合理的方法来检查? 问题答案: ECMAScript 6引入了: 但是不支持。在ECMAScript 5或更旧的环境中,使用,当找不到子字符串时,它将返回-1:

  • 通常我希望有方法,但似乎没有。 对此有什么合理的检查方法?

  • 问题内容: 我有一个购物车,在下拉菜单中显示产品选项,如果它们选择“是”,我想使页面上的其他一些字段可见。 问题是购物车的文本中还包含价格修饰符,每个产品的价格修饰符可能不同。以下代码有效: 但是我宁愿使用这样的东西,它不起作用: 我只想在所选选项包含单词“是”的情况下执行操作,并且会忽略价格修饰符。 问题答案: 像这样: …或者您可以使用波浪号运算符: 之所以有效,是因为如果根本找不到该字符串,

  • 问题内容: 我想检查我的字符串是否包含+字符。我尝试了以下代码 但是它没有给出预期的结果。 问题答案: 您需要此: 类的方法不使用正则表达式作为参数,而是使用普通文本。 编辑: 输出:

  • 问题内容: 我正在尝试查看文件是否包含发送到页面的字符串。我不确定这段代码有什么问题: 问题答案: 简单得多: 回应有关内存使用的评论: