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

时间:2015-06-16 05:01:28

标签: java spring mongodb spring-data-mongodb

我使用的是spring-data-mongodb。

我想在我的存储库中使用$或operator。

这是我的疑问:

@Query("{'type':?0}")
List<Doc> findByType(String type, Pageable pageable);

如何使用$或@Query,因为它可以匹配任何类型或名称,并获取文档。 请帮忙。

3 个答案:

答案 0 :(得分:4)

根据MongoDB reference for $or,您的查询应为

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

你需要提供传递类型和名称参数。

答案 1 :(得分:3)

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

查询应该是:

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

答案 2 :(得分:1)

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

Page<Doc> findByTypeOrName(String type, String name, Pageable pageable);