Либо вам может понадобиться реализовать пользовательский запрос JPA, либо вам необходимо использовать QueryDSL в таких сценариях.
1) Пользовательский запрос JPA, например, вам может потребоваться изменить запрос, если вы хотите добавить новые необязательные параметры.
@Query(value = "{$or:[{name: ?0}, {?0: null}], $or:[{price: ?1}, {?1: null}]}")
List<Response> findByNameAndPrice(String name, Integer price)
2) QueryDSL Подход, в котором вы можете добавить как можно больше необязательных параметров, не нужно изменять ваш код. Он будет генерировать запрос автоматически.
См. Эту ссылку для получения дополнительной информации: Хранилище данных Spring MongoDB - JPA Спецификации, такие как