Я пытаюсь найти рецепты в базе данных, где их заголовки содержат строку в параметре метода. Я не хочу, чтобы это было точное совпадение (как оно есть сейчас), но вместо этого, если строка существует где-либо в поле '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".*/ }
Есть небольшая стрелка, указывающая на конкретное место в строке, не уверена, если это уместно:
Я действительно не уверен, что делаю неправильно. Кто-нибудь может увидеть мою ошибку? Сообщение об ошибке мне тоже не помогает.