Spring mongodb репозиторий возвращает 0 записей для запроса по полю, имеющему тип списка

Я пытаюсь получить список пользователей, чьи комментарии соответствуют определенному ключевому слову ввода из коллекции документов mongodb.

Определение моего документа пользователя выглядит так

      public class User {
        @Id
        private String id;
        private String name;
        List<String> comments; 
      }

И мой код Spring Repository выглядит так

     @RepositoryRestResource(collectionResourceRel = "user", path = "user")
      public interface UserRepository extends 
 MongoRepository<User,String>,CustomUserRepository {


     @Query(value = "{'comments': ?0} ")
     List<User> findByComments(String username);

     List<User> findByCommentsIn(List<String> comments);

     List<User> findBycomments(String username);

Когда я запрашиваю его из оболочки Монго, он работает нормально, db.user.find({"comments": /test/}) возвращает ожидаемый результат.

Но то же самое не работает с Spring Data mongodb.

И я также попытался использовать пользовательский репозиторий, чтобы использовать шаблон монго. Фрагмент кода выглядит следующим образом: Query query = new Query()

    query.addCriteria(
            Criteria.where("comments").in("/"+user+"/")             
     );     

    List<User> result =  mongoTemplate.find(query, User.class);

1 ответ

Решение

После небольшого дополнительного исследования это работает, если я использую $regex в моем методе запроса. @Query(value = "{'comments': {$regex:?0}}") List findByComment(String comment);

Дополнительно, было бы интересно узнать, как отлаживать такие проблемы.

Другие вопросы по тегам