2017-01-19 5 views

ответ

6

Вы можете попробовать что-то вроде ниже. Предполагает, что вы используете класс pojo User.

Использование MongoTemplate

i вариант для случая нечувствительной.

Criteria regex = Criteria.where("username").regex("*.ab.*", "i"); 
mongoOperations.find(new Query().addCriteria(regex), User.class); 

Использование MongoRepository (чувствительно к регистру)

List<User> users = userRepository.findByUserNameRegex(".*ab.*"); 

interface UserRepository extends MongoRepository<User, String> { 
    List<User> findByUserNameRegex(String userName); 
} 

Использование MongoRepository с Query DSL (чувствительно к регистру)

List<User> users = userRepository.findByQuery(".*ab.*"); 

interface UserRepository extends MongoRepository<User, String> { 
    @Query("{'username': {$regex: ?0 }})") 
    List<User> findByQuery(String userName); 
} 

Для Non-Regex основе запроса теперь вы можете использовать поиск без учета регистра/сортировать через сопоставление с локалью и силой, установленной на первичный или вторичный.

Query query = new Query(filter); 
query.collation(Collation.of("en"). 
        strength(Collation.ComparisonLevel.secondary())); 
mongoTemplate.find(query,clazz,collection); 
0

Да, вы можете, если вы настроили правильно, я хотел бы добавить что-то вроде этого в вашем хранилище метода:

{ «имя пользователя»: {$ регулярного выражения:/абы/я}})

@Query ("{ 'имя пользователя': {$ регулярное выражение:/1/я}})")

Список findUsersByUserName (String имя_пользователя);

3

Я знаю, что это старый вопрос. Я просто нашел решение в другом посте. Использование $ регулярных выражений и $ опции, как показано ниже:

@Query(value = "{'title': {$regex : ?0, $options: 'i'}}") 
Foo findByTitleRegex(String regexString); 

увидеть оригинальный ответ: https://stackoverflow.com/a/19068401

2
@Repository 
public interface CompetenceRepository extends MongoRepository<Competence, String> { 

    @Query("{ 'titre' : { '$regex' : ?0 , $options: 'i'}}") 
    List<Competence> findAllByTitreLikeMotcle(String motCle); 
} 

должна работать идеально, она работает в моих projects.for слов на французском языке тоже

Смежные вопросы