Java 在spring data mongodb存储库中的@Query注释中使用$or运算符

Java 在spring data mongodb存储库中的@Query注释中使用$or运算符,java,spring,mongodb,spring-data-mongodb,Java,Spring,Mongodb,Spring Data Mongodb,我使用的是spring数据mongodb 我想在我的存储库中使用$or运算符 这是我的疑问: @Query("{'type':?0}") List<Doc> findByType(String type, Pageable pageable); @Query(“{'type':?0}”) 列表findByType(字符串类型,可分页); 如何在@Query中使用$or,以便它可以匹配类型或名称并为我获取文档。 请提供帮助。根据MongoDB,您的查询应该是 @Query("{'$

我使用的是spring数据mongodb

我想在我的存储库中使用$or运算符

这是我的疑问:

@Query("{'type':?0}")
List<Doc> findByType(String type, Pageable pageable);
@Query(“{'type':?0}”)
列表findByType(字符串类型,可分页);
如何在@Query中使用$or,以便它可以匹配类型或名称并为我获取文档。 请提供帮助。

根据MongoDB,您的查询应该是

@Query("{'$or':[ {'type':?0}, {'name':?1} ]}")

您需要提供pass type和name参数。

您甚至不需要手动定义查询:

Page<Doc> findByTypeOrName(String type, String name, Pageable pageable);
Page findByTypeOrName(字符串类型、字符串名称、可分页);

我找到了问题的答案,其中还处理可选的查询参数

查询应为:

@Query("{'type':?0,'$or':[{ $where: '?1 == null' },{'key':?1},{ $where: '?2 == null' },{'username':?2}]}")
    List<Doc> findByType(String type, String key, String username, Pageable pageable);
@Query(“{'type':?0',$or':[{$where:'?1==null'},{'key':?1},{$where:'?2==null'},{'username':?2}]}”)
列出findByType(字符串类型、字符串键、字符串用户名、可分页);