MongoDB DSL过滤器

问题描述 投票:0回答:1

使用DSL进行过滤时,如果通过的过滤器为空,则结果为空。您能否就如何忽略未设置的URL参数提供一些建议。

示例:

@Query(value ="{$and:[{'country.name':{$eq:?0}},{'providerName':{$eq:?1}}]})"

上面的查询工作正常,并返回了文档。但是,如果位置过滤器为null,则结果为空。如果未设置值,如何编写忽略参数的查询。

亲切的问候,阿贾伊

spring mongodb mongodb-query dsl
1个回答
0
投票

在这种情况下,我强烈建议在这种情况下使用Query API来基于要传递的参数来构建查询,但是如果要使用查询DSL,可以执行类似的操作,必须检查是否为null并可以据此建立查询。

@Query("{$and :["
        + "?#{ [0] == null ? { $where : 'true'} : { 'userId' : {$eq:[0]}} },"
        + "?#{ [1] == null ? { $where : 'true'} : { '_id' : {$eq:[1]}}}"
        + "]}")

参考:mongodb.repositories.queries.json-spel

© www.soinside.com 2019 - 2024. All rights reserved.