Akn*_*glu 9 full-text-search mongodb-query spring-data-mongodb
我想用正则表达式查询使文本搜索大小写不敏感spring-data mongo .
例如在Oracle中:
select * from user where lower(username) like '%ab%'
我该如何进行此查询spring-data mongo ?
提前致谢
use*_*814 15
你可以试试下面的东西.假设你有一个Userpojo课程.
使用MongoTemplate
i 不区分大小写的选项.
Criteria regex = Criteria.where("username").regex("*.ab.*", "i");
mongoOperations.find(new Query().addCriteria(regex), User.class);
Run Code Online (Sandbox Code Playgroud)
使用MongoRepository(区分大小写)
List<User> users = userRepository.findByUserNameRegex(".*ab.*");
interface UserRepository extends MongoRepository<User, String> {
List<User> findByUserNameRegex(String userName);
}
Run Code Online (Sandbox Code Playgroud)
将MongoRepository与Query dsl一起使用(区分大小写)
List<User> users = userRepository.findByQuery(".*ab.*");
interface UserRepository extends MongoRepository<User, String> {
@Query("{'username': {$regex: ?0 }})")
List<User> findByQuery(String userName);
}
Run Code Online (Sandbox Code Playgroud)
对于基于非正则表达式的查询,您现在可以使用不区分大小写的搜索/排序,并将区域设置和强度设置为主要或次要.
Query query = new Query(filter);
query.collation(Collation.of("en").
strength(Collation.ComparisonLevel.secondary()));
mongoTemplate.find(query,clazz,collection);
Run Code Online (Sandbox Code Playgroud)
Art*_*emi 10
我知道这是一个老问题.我刚在另一篇文章中找到了解决方案.使用$ regex和$ options如下:
@Query(value = "{'title': {$regex : ?0, $options: 'i'}}")
Foo findByTitleRegex(String regexString);
Run Code Online (Sandbox Code Playgroud)
请参阅原始答案:https: //stackoverflow.com/a/19068401
小智 5
@Repository
public interface CompetenceRepository extends MongoRepository<Competence, String> {
@Query("{ 'titre' : { '$regex' : ?0 , $options: 'i'}}")
List<Competence> findAllByTitreLikeMotcle(String motCle);
}
Run Code Online (Sandbox Code Playgroud)
应该可以完美运行,它适用于我的项目。对于法语单词也是如此
| 归档时间: |
|
| 查看次数: |
14222 次 |
| 最近记录: |