Spring mongodb存储库返回0个条目,用于查询类型为list的字段

时间:2017-10-15 13:21:20

标签: spring mongodb spring-data-mongodb

我正在尝试获取其评论与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);

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

但同样不适用于Spring Data mongodb。

我还尝试使用Custom Repository来使用mongo模板。 代码段如下         查询查询=新查询()

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

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

1 个答案:

答案 0 :(得分:0)

经过一番研究后,如果我在查询方法中使用$ regex,它就有效。          @Query(值=&#34; {&#39;评论&#39;:{$ regex:?0}}&#34;)          列出findByComment(String comment);

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