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(字符串注释);
另外,有兴趣了解如何调试此类问题。
我正在尝试从 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(字符串注释);
另外,有兴趣了解如何调试此类问题。