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);
Дополнительно, было бы интересно узнать, как отлаживать такие проблемы.