Java Springdata:mongodb查找查询,可选;“标准”;
休斯顿,我有个问题(大家好!) 我正在使用springdata的@query注释,我需要使用一些标准执行查找查询 假设我的集合对象类似于:Java Springdata:mongodb查找查询,可选;“标准”;,java,spring,mongodb,spring-data,spring-data-mongodb,Java,Spring,Mongodb,Spring Data,Spring Data Mongodb,休斯顿,我有个问题(大家好!) 我正在使用springdata的@query注释,我需要使用一些标准执行查找查询 假设我的集合对象类似于: 代码 日期 钥匙 帐户{email,firstname,lastname} 地位 我的搜索条件对象是 代码 日期 钥匙 电子邮件 地位 我需要在集合中搜索符合条件的文档 问题是搜索条件不是强制性的,所以我可以有一些空参数(例如,有时我必须查找带有特定代码和日期的文档,有时带有特定电子邮件等),所以我开始用谷歌搜索解决方案 我读过关于$or和$and操
- 代码
- 日期
- 钥匙
- 帐户{email,firstname,lastname}
- 地位
- 代码
- 日期
- 钥匙
- 电子邮件
- 地位
@Query(value = "{date: { $exists: false }, key: ?0 , $or : [{$or : [{$where: '?1==null'}, {code : ?1}]},{$or : [{$where: '?2==null'}, {status : ?2}]}]}")
public Page<Notification> findByNotificationCriteria(Pageable page, String key, String code, String status);
@Query(value=“{date:{$exists:false},key:?0,$or:[{$or:[{$where:''1==null'},{$code:?1}]},{$or:[{$where:''2==null'},{状态:?2}]}”)
公共页面findByNotificationCriteria(可分页页面、字符串键、字符串代码、字符串状态);
(一开始我还尝试了$and运算符)
但结果并不是我所期望的
我做错了什么,还是只是springdata的问题
谢谢。我知道这不是一个真正的解决办法
MongoTemplate
类com.mysema.query.apt.QuerydslAnnotationProcessor
,而是使用org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor
,因为您不必使用查询dsl的@QueryEntity
;)
如果你只有一个存储库,在那里你有可选的参数,考虑到子库(4)
的子类。如果你的查询逻辑很复杂,你可以通过直接使用代码来创建查询,而不是使用@查询注释,这样会更好。感谢这些信息,它们非常有用。最后,我使用了mongo模板(我已经知道了逻辑,没有那么多时间来实现新的东西)。一切正常。我希望如此。作为附录:顺便提一下,还有一些情况下你不能使用查询dsl,而必须处理MongoTemplate:我想还有更多这样的事情。。。