使用DSL进行过滤时,如果通过的过滤器为空,则结果为空。您能否就如何忽略未设置的URL参数提供一些建议。
示例:
@Query(value ="{$and:[{'country.name':{$eq:?0}},{'providerName':{$eq:?1}}]})"
上面的查询工作正常,并返回了文档。但是,如果位置过滤器为null,则结果为空。如果未设置值,如何编写忽略参数的查询。
亲切的问候,阿贾伊
在这种情况下,我强烈建议在这种情况下使用Query API来基于要传递的参数来构建查询,但是如果要使用查询DSL,可以执行类似的操作,必须检查是否为null并可以据此建立查询。
@Query("{$and :["
+ "?#{ [0] == null ? { $where : 'true'} : { 'userId' : {$eq:[0]}} },"
+ "?#{ [1] == null ? { $where : 'true'} : { '_id' : {$eq:[1]}}}"
+ "]}")