首页 > 解决方案 > firestore >= 未按预期返回结果

问题描述

>=再次使用查询集合。为了测试脚本,我的收藏中只有 4 个条目。

我的查询是:

 ...
.where("Workdesc", ">=", "imple") // no returning as expected
.get()
.then(querySnapshot => {
    querySnapshot.forEach(function(doc) {
        console.log("Result");
        console.log(doc.id, " ===> ", doc.data());
    });
  });

Workdesc在所有 4 个文档中是 -

根据我的结果,它应该返回所有 4 个文档,但它只返回 2 个。我附上了控制台日志和 Firebase 控制台的屏幕截图:

在此处输入图像描述

在此处输入图像描述

如何在字符串中的任何位置使用部分字母返回结果。

标签: firebasegoogle-cloud-firestore

解决方案


您的查询按预期工作。当您对字符串进行比较时,它们会按字典顺序排序,或者换句话说,按字母顺序排序。这是每个值的实际排序顺序,以及“impl”在其中排序的位置:

  1. “cb实施紧急工作”
  2. “HB 实施紧急”
  3. “实施”
  4. “kj实施”
  5. “sharu 实施需要快速响应”

按字母顺序,您可以看到“k”和“s”在“i”之后。因此,这些是您将从 Workdesc 值大于“impl”的查询中获得的唯一文档。

如果您尝试进行子字符串搜索以查找所有包含“impl”的 Workdesc 字符串,那么 Firestore 无法做到这一点。 Firestore 不提供子字符串搜索。 您必须找到另一种方法(可能将数据镜像到另一个支持它的数据库)。


推荐阅读