본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


몽고DB/Java 몽고DB14

Mongotemplate에서 MongoDB 증감 연산자 사용과 기타 다른 update 연산자 몽고템플릿을 사용하여 몽고DB에 있는 숫자형태(Int) 값을 증감시키는 방법을 소개합니다. 일반 관계형 데이터베이스에서는 증감하는 방법이 어렵지 않았습니다. 예를들어 특정한 컬럼의 데이터를 1 만큼 증가시키려면 아래와 같은 쿼리문을 동작하면 가능했습니다. Update test_db set number = number + 1; 몽고DB에서도 이와 같은 기능이 존재합니다. 바로 inc라는 업데이트를 위한 연산자 입니다. 이러한 기능은 몽고템플릿에서도 동일하게 제공 됩니다. 바로 내용을 살펴보겠습니다. 1. 숫자형 필드에서의 데이터 증감방법 아래와 같은 데이터가 존재합니다. 해당 데이터에서 number값을 증감 할 수 있는 메소드를 만들어 보겠습니다. private void numberChange(MongoT.. 2020. 5. 14.
Mongotemplate에서 배열값 관리 (Mongotemplate push, pull) * Mongotemplate Array, Mongotemplate 배열 몽고DB에서 데이터는 다양한 형태로 존재 합니다. 문자, 숫자, 배열, Json형태 등등 여러 형태가 자유롭게 존재합니다. 일반적으로 update라는 메소드를 통해서 몽고DB의 데이터를 변경 할 수 있습니다. 그런데, 만약에 내가 수정해야되는 데이터가 배열형태면 어떻게 해야 될 까요? 배열형태에 특정 데이터를 삭제하거나, 추가하려면 어떻게 해야 되는 것 일까요? 일반적인 방법은 해당 내용을 조회하여 배열 데이터를 가져온 뒤에 배열에서 필요한 내용을 제거하거나 추가한 뒤에 업데이트를 하곤 합니다. 아래 예를들어 보겠습니다. private MongoTemplate template; private void selectAndUpdate(){.. 2020. 5. 13.
몽고DB 트랜잭션을 위한 리플리카 셋, 적용 테스트(Mongodb transaction, Mongodb replica set) 몽고DB 4.0 이상 버전부터 트랜잭션 지원이 가능하여 졌다. 몽고DB의 오랜 단점을 지워주는 멋진기능인데...이게 일반적인 몽고DB서버에 적용하는 것은 불가능 하다. https://docs.mongodb.com/manual/reference/method/Session.startTransaction/ 위 글의 핵심적인 내용은 몽고db에서의 트랜잭션은 리플리카셋 환경에서만 지원된다는 점 이다. * 리플리카 = 레플리카 = Replica 리플리카셋은 쉽게 말하면 백업 저장소의 개념이며 최소한 마스터서버, 슬레이브서버가 각 1개씩 존재 하여야 한다. 다른표현으로는...관계형 DB에서 주로 사용되는 "데이터베이스 이중화" 라는 말과 비슷한 개념이다. 마스터서버, 슬레이브서버 등으로 데이터베이스가 서로 최소 2개.. 2019. 11. 26.
Java Mongodb 연동, Java 몽고db 연동 (4.0이상 버전) 몽고DB가 4.0 이상 버전에서의 다양한 기능을 사용하려면 JAVA에서 지원하는 라이브러리 버전도 마찬가지로 올려주어야 한다. 구글링해서 나오는 연동 방법은 대부분 몽고드라이버 3.8 이하 버전때, 데이터 파싱을 담당하는 스프링데이터 2.1 이하 버전때를 사용해서 나오는 방법이다. * 2019.11.26 기준 * spring-data-mongodb : 2.1이하 버전 * mongo-java-driver : 3.8 이하 버전 그런데 4.0 이상의 몽고db의 기능을 좀 사용하려면 낮은 라이브러리를 사용하다보면 기능동작이 잘 안되는 경우가 존재 한다. 그리하여 해당 2개의 라이브러리 버전을 확 높여보았다. * spring-data-mongodb : 2.2.1 * mongo-java-driver : 3.11.1.. 2019. 11. 26.
MongoTemplate Aggregate 2 (lookup, unwind,first,last,push ..) 몽고db에서 자주 사용되는 집계함수 기능에 대해서 정리하여 보았다. 1. body 컬렉션 내용은 아래와 같다. 2. head 컬렉션 내용이다. 3. 단순 집계 기능이다. 조회, 그룹핑, 카운트 및 합계이다. 대상은 body 컬렉션이다. as 메소드는 불리우는 이름이다. public void simpleSingle(){ Aggregation agg = null; AggregationResults results = null; agg = Aggregation.newAggregation( Aggregation.project() //1. 매핑할 이름 .and("text").as("text_conv") //2.기존 도큐먼트 이름 바꾸기 가능 .and("type").as("type") .and("date").as(".. 2019. 9. 6.
MongoTemplate Aggregate 사용간 파싱 버그 몽고db에서 집계함수를 통해서 통계작업을 하던 도중 당황스러운 버그를 보았다. CHOICE_INFO.REG_DATE는 일반 문자열 상수로 String 값을 가지며, 값은 reg_date라는 소문자를 넣어놨었다. 즉, 내가 가져오는 값은 date, date를 daying으로 바꾼 값 2개인데.. 위 스코드 어디에도 _id 를 키 또는 Projection에서 가져오는 구간이 없다. 그럼에도 불구하고 daying으로 이름을 바꾼 속성이 키 값으로 _id를 지정되서 나오는 모습을 보게 되었다.. 이런 황당한 버그를 보았나;; 아무튼 위 현상을 해결하기위해 간단한 소스코드 한줄을 추가하였다. 어디에도 쓰이지않는 아무의미없는 "1"이라는 값을 key, value로 가져오게 하자 위 현상이 멈추었다. 아마도.. Mo.. 2019. 7. 19.