检查多个字段是否包含字符串

Checking if multiple fields contains a String

我正在使用 MongoTemplate 构建一个跨多个字段搜索字符串的查询(与 SQL 中的 LIKE %abc% 完全一样)。所以,我有一个像这样的对象:

{
  "location": "Pacific",
  "status": "Closed",
  "badge": "220394"
}

我尝试了什么

现在,我写了一个查询:

Criteria freeTextCriteria = Criteria.where("badge").regex(".*" + freeText + ".*", "i");
dynamicQuery.addCriteria(freeTextCriteria);

上面的这个 return 对象只有当我将 freeText 作为 2039 传递时,但当我将 freeText 作为 [=17] 传递时没有 return 任何结果=](完整值)。为什么会这样?

此外,我需要对多个字段进行此查询。因此,2039 应该匹配 location OR status OR badge。当我 运行 以下查询时:

Criteria freeTextCriteria = 
    Criteria.where("location").regex(".*" + freeText + ".*", "i")
        .orOperator(Criteria.where("badge").regex(".*" + freeText + ".*", "i"));
dynamicQuery.addCriteria(freeTextCriteria);

以上 return 即使是部分文本也没有任何结果。我该如何解决?

Criteria freeTextCriteria = new Criteria();
freeTextCriteria.orOperator(Criteria.where("location").regex(".*"+ freeText +".*"), Criteria.where("badge").regex(".*"+ freeText +".*"));
Query dynamicQuery = new Query(freeTextCriteria);
mongoTemplate.find(dynamicQuery, <Yourclass>.class, "collectionName");

这会起作用。