【问题标题】:Spring mongodb repository returns 0 entries for query on field which is of type listSpring mongodb 存储库返回 0 个条目以查询列表类型的字段
【发布时间】:2018-03-27 02:22:05
【问题描述】:

我正在尝试从 mongodb 文档集合中获取其 cmets 与特定输入关键字匹配的用户列表。

我的用户文档定义看起来像

      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);

当我从 mongo shell 查询它时,它工作正常, db.user.find({"comments": /test/}) 返回预期结果。

但同样不适用于 Spring Data mongodb。

而且我还尝试使用 Custom Repository 来使用 mongo 模板。 代码sn -p如下 查询查询 = new Query()

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

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

【问题讨论】:

    标签: spring mongodb spring-data-mongodb


    【解决方案1】:

    经过一点研究,如果我在查询方法中使用 $regex,它就可以工作。 @Query(value = "{'cmets': {$regex:?0}}") List findByComment(String comment);

    另外,有兴趣了解如何调试此类问题。

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 2019-02-19
      • 2021-09-03
      • 1970-01-01
      相关资源
      最近更新 更多