Issue
I'm trying to build a multifunctional search method using MongoTemplate, Query and Criteria.
Here is my RequestMapping for variable search:
public Page<Users>getUsers(
@RequestParam(value = "name", required = false)
String name) {
Query query = new Query();
Criteria criteria = new Criteria();
criteria = criteria.where("name").regex(".*" + name + ".*","i");
query.addCriteria(criteria);
I want to be able to search lastName
with multiple request parameters. For example, I want to find everyone with lastname "Smith" and "Johnson".
Something like this:
@RequestParam(value = "lastName", required = false) List<String> lastName) {
Query query = new Query();
Criteria criteria = new Criteria();
criteria = criteria.where("lastName").regex(do something different..);
query.addCriteria(criteria);
URL will be: http://localhost:8080/get?lastName=Smith&lastName=Johnson
This is where I found Mapping a Multi-Value Parameter https://www.baeldung.com/spring-request-param , but it is not clear how exactly does it work. If someone can provide a link with full example (repository, handler and stuff), please do.
Solution
this is how i did it:
if (CollectionUtils.isNotEmpty(lastName)) {
Criteria lastNameCriteria = new Criteria();
lastNameCriteria = lastNameCriteria.where("lastName").in(lastName.toArray());
criterias.add(lastNameCriteria);
}
Answered By - M G
Answer Checked By - David Marino (JavaFixing Volunteer)