代码之家  ›  专栏  ›  技术社区  ›  Usman Azhar

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

  •  0
  • Usman Azhar  · 技术社区  · 8 年前

    我的用户文档定义如下所示

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

    我的Spring存储库代码看起来像

         @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数据mongodb也不适用。

    代码段如下 Query Query=new Query()

        query.addCriteria(
                Criteria.where("comments").in("/"+user+"/")             
         );     
    
        List<User> result =  mongoTemplate.find(query, User.class);
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Usman Azhar    8 年前

    稍加研究后,如果我在查询方法中使用$regex,它就会起作用。 @查询(value=“{comments':{$regex:?0}}”) List findByComment(字符串注释);

    另外,我想知道如何调试此类问题。