Запрос регулярного выражения MongoDB не работает в Java / Spring - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь найти рецепты в базе данных, где их заголовки содержат строку в параметре метода. Я не хочу, чтобы это было точное совпадение (как оно есть сейчас), но вместо этого, если строка существует где-либо в поле 'title' рецепта, это следует считать совпадением. Это означает, что если я ищу «говядину», вы можете получить много рецептов. Вот мой код:

import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;

public interface RecipeRepository extends MongoRepository<Recipe, String> {

    public Recipe findByTitle(String title);

    //@Query("{ 'title': /.*?0.*/ }")
    @Query("{ 'title' : ?0 }")
    public List<Recipe> findByTitleLike(String title);

} 

Код в настоящее время работает с заполнителем ?0 и находит совпадения, точно соответствующие названию. Вы можете увидеть мою закомментированную строку выше с регулярным выражением, где я пытался сопоставить в основном все, что угодно с обеих сторон параметра title, поэтому, если оно вообще есть в заголовке, оно должно совпадать.

Я последовал этому ответу, чтобы построить запрос регулярного выражения: https://stackoverflow.com/a/3305687/8887398

Я также посмотрел документы: https://docs.mongodb.com/manual/reference/operator/query/regex/

Я получаю эту ошибку, когда запускаю свой код:

Unsatisfied dependency expressed through field 'repository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'recipeRepository': Invocation of init method failed; nested exception is com.mongodb.util.JSONParseException: 
{ 'title': /.*"_param_0".*/ }

Есть небольшая стрелка, указывающая на конкретное место в строке, не уверена, если это уместно:

enter image description here

Я действительно не уверен, что делаю неправильно. Кто-нибудь может увидеть мою ошибку? Сообщение об ошибке мне тоже не помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...