检查多个字段是否包含字符串
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");
这会起作用。
我正在使用 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");
这会起作用。