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

Spring mongodb repository returns 0 entries for query on field which is of type list

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

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

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

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

但同样不适用于 Spring 数据 mongodb.

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

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

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

经过更多研究,如果我在查询方法中使用 $regex,它就可以工作。 @Query(value = "{'comments': {$regex:?0}}") 列表 findByComment(字符串注释);

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