일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 태그없음
- for
- Entity
- java
- springboot
- 자바란
- 카멜케이스
- redis
- 테이블정의서
- linux
- banner
- 파스칼케이스
- 반복
- Docker
- inmemory
- 케밥케이스
- OS
- javax
- MongoTemplate
- spring
- pdf변환
- jpa
- mongodb
- websokcet
- spring-rest-docs
- commons-fileupload
- 2중for
- nginx
- 외부허용
- 스네이크케이스
Archives
- Today
- Total
겸쨔
[mongodb] mongodb 동적 쿼리 - MongoTemplate 본문
반응형
안녕하세요.
몽고에서 기본적으로 제공하는 함수 외에도 복잡한 쿼리나
원하는 동작을 구현할 수 있는 MongoTemplate이라는 녀석이 있어요.
MongoTemplate은 Spring Data MongoDB를 추가하고 있다면 바로 사용할 수 있어요.
MongoTemplate 자체가 뭐 Bean으로 등록되어 있는 녀석을 상속받고 있거든요.
MongoTemplate도 MongoRepository와 같이 여러가지 함수를 제공하고 있어요.
근데 저희가 쓰려는건 저런 기본적인 함수가 아니지요?
어떻게 사용하는지 알아봅시다.
Service단에서 해도 돼요.
일단 얘는 페이지네이션 구현한건데요.
private final MongoTemplate mongoTemplate;
public List<응답객체> paging(검색객체 검색객체) {
Query queryForSelect = new Query();
queryForSelect.skip(검색객체.getPageIndex());
queryForSelect.limit(검색객체.getPageUnit());
queryForSelect.with(Sort.by(Sort.Direction.DESC, "regDate"));
queryForSelect.addCriteria(Criteria.where("조건1").is(검색객체.get조건1())
.and("조건2").is(검색객체.get조건2()));
List<응답객체> 응답객체리스트 = mongoTemplate.find(queryForSelect, 응답객체.class);
}
Query 객체는 Spring Data MongoDB가 제공하는 녀석이에요.
Query를 사용해서 실제 여러 쿼리를 구현할 수 있구요.
mongoTemplate을 사용해서 Query객체랑 응답 받을 객체를 find() 인자로 넘겨주면 돼요.
당연히 응답 받을 객체랑 타입과 이름이 맞아야 하겠지요.
업데이트도 칠 수 있어요.
Query query = new Query();
Update update = new Update();
query.addCriteria(Criteria.where("조건1").is(검색객체.get조건1())
.and("조건2").is(검색객체.get조건2()));
update.set("key", "value");
mongoTemplate.updateMulti(query, update, 응답객체.class);
제가 작년에 정리한거 가져 온거라 기억이 잘 안 나는데,
업데이트 하는데 응답객체 클래스를 왜 넣은걸까요?
안 넣어도 될거 같은데 말이지요..
넣으면 바뀐걸로 반환 해주나봐요.
반응형
'db > mongodb' 카테고리의 다른 글
[mongodb] 계정 및 권한 추가 (1) | 2024.07.22 |
---|---|
[mongodb] 외부 접속 허용 (0) | 2024.07.22 |
[mongodb] Spring Data MongoDB 연동 (1) | 2024.07.22 |
[mongodb] 몽고디비란? (0) | 2024.07.22 |
[mongodb] 인증 설정 및 admin 패스워드 변경 (0) | 2024.07.22 |