Фильтры MongoDB DSL - PullRequest
0 голосов
/ 25 мая 2020

При фильтрации с помощью DSL, если переданные фильтры пусты, то результаты пусты. Не могли бы вы дать несколько советов о том, как игнорировать параметры URL, которые не установлены.

Пример:

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

Вышеупомянутый запрос работает нормально, и документы возвращаются. Но если позиционные фильтры равны нулю, результат будет пустым. Как написать запрос, который игнорирует параметры, если значение не задано.

С уважением, Аджай

1 Ответ

0 голосов
/ 25 мая 2020

В этом случае я настоятельно рекомендую использовать Query API для построения запроса на основе передаваемого параметра, но если вы хотите использовать DSL запроса, это можно сделать примерно так, вы должны проверить на null и может построить запрос соответствующим образом.

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

Ссылка: mongodb.repositories.queries. json -spel

...