Spring Data JPA MongoDB Expressions
How it works:
-
Customize JPA Repository base class:
@SpringBootApplication @EnableJpaRepositories(repositoryBaseClass = ExpressionsRepositoryImpl.class) public class Application { β¦ }
-
Change your repository to extends
ExpressionsRepository:@Repository public interface EmployeeRepository extends ExpressionsRepository<Employee, Long> { }
-
Build the controller/service:
@PostMapping("/search") public ResponseEntity<Page<EmployeeDto>> search(@RequestBody Expressions expressions, Pageable pageable) { return ok().body( employeeRepository.findAll(expressions, pageable).map(employeeMapper::toDto) ); }
-
Send Mongodb query in JSON from frontend:
{ "$or": [ {"lastName": "ibrahim"}, { "$and": [ {"firstName": "mostafa"}, {"birthDate": {"$gt": "1990-01-01"}} ] } ] }
Learn more
For quick start see this Medium post or dev.to post or see this demo example on Github.
See documentation website for details about how to get started.
Install:
<dependency> <groupId>com.github.mhewedy</groupId> <artifactId>spring-data-jpa-mongodb-expressions</artifactId> <version>0.1.0</version> </dependency>
Note: Starting from version
0.1.0the library supports springboot 3, to use the library with springboot 2 use versions0.0.xe.g. version0.0.5.π Special Thanks
Special thanks to Rashad Saif and Hamada Elnoby for helping in the design, inspring with ideas, and for doing code review.
Next Release
See List of issues to be shipped in the next release
In the News
This repo has mentioned in spring.io weekly news.
Online Validator
see https://expressions-validator.fly.dev/ to help validate expressions
