Spring Mongo @Query查询不忽略大小写,如何实现大小写不敏感匹配?
Spring Data MongoDB 大小写不敏感查询修改方案
你现有的代码里正则表达式没有配置忽略大小写的标识,所以查询默认是大小写敏感的,可按以下两种方案调整:
方案1:修改现有@Query注解配置
在MongoDB查询中添加$options参数指定i(忽略大小写)标识即可,修改后的代码如下:
// 注意:调用该方法前请先将text参数包装为".*" + 搜索关键词 + ".*"的格式实现全模糊匹配 @Query("{'occasionId':?0,'text':{$regex:?1, $options:'i'}}") Page<FreeMessageCard> findByOccasionIdAndTextIgnoreCase(String occasionId, String text, Pageable pageable);
方案2:使用Spring Data衍生查询(无需手写@Query)
Spring Data MongoDB支持通过方法名自动生成查询规则,直接按规则定义方法名即可自动实现大小写不敏感的模糊查询:
Page<FreeMessageCard> findByOccasionIdAndTextContainingIgnoreCase(String occasionId, String text, Pageable pageable);
该写法框架会自动解析为:匹配指定occasionId、text字段包含搜索关键词且忽略大小写的查询规则,无需手动处理正则拼接。
注意事项
- 数据量较大的场景下,大小写不敏感的正则查询性能较低,建议给
text字段建立对应索引优化查询效率。 - 如果需要精准匹配前缀/后缀,可自行调整正则规则,仅保留需要的通配符位置即可。
内容的提问来源于stack exchange,提问作者diaop
相关产品推荐
相关产品推荐

