카테고리 없음

MongoDB 세팅 및 사용

류창 2023. 7. 12. 17:46
반응형

 

 

 

MongoDB는   NoSQL의 일종이다.

 

NoSqL은   RDBMS와는 달리,

관계가 존재하지 않고,  비정형 데이터 (스키마X) , 대규모 데이터 저장에 적합하다.

 

그중에 MongoDB는  Text파일과같은 형식으로 저장하고싶을때 더욱 사용한다.

 

예를들어,  Input은 많이 일어나는데  Update는 별로 일어나지않는 대규모 비정형 데이터

Ex)  로그 , 채팅기록 

 

 

만약 Update가 자주일어난다면 RDBMS를 사용하는걸 추천한다. 

 

 

-------------------------------------------------------------------------------------------------------------------------

 

서론은 다음과같았고, 본격적으로 MongoDB를 세팅을해봅시다.

 

 

역시 시작하기전에  MongoDB 라이브러리를 받아온다.

 

0. MongoDB 사전세팅

 

gradle 환경은  Spring.start.io로 넣거나,  mvnRepository를 통해 받아오자.

 

 

MongoConfig

 

MongoDB를 설정하는 클래스다.

 

AbstractMongoClientConfiguration을 Extends를 받고,  오버라이딩하여 세팅을해주면됩니다.

 

getDatabaseName에는  내가  쓰고싶은 DB의 이름을 세팅합니다.

 

mongoClient()에는  mongodb의 경로를 설정하고  create를 해줍니다.

 

getMappingBasePakages()는  MongoConfig가 존재하는 Package위치를 설정해줍니다.

 

 

1.MongoDB 데이터 넣어보기

 

MongoDB에   OrderInfo 즉, 주문정보 로그를 넣어보려고합니다.

 

데이터는 seq ,name ,store, state로 4가지 컬럼을 담습니다.

 

@Document 어노테이션으로  Collection 이름을 세팅합니다.

 

이 Collection이 마치 RDBMS에선 Table과 비슷한 개념을 합니다.

 

 

MongoRepository

 

@Repository로  몽고저장소를 사용함을 정의합니다.

 

extends는 MongoRepository를 사용하되, <Key: 넣고싶은 DTO, value:DTO의 ID 타입>을 넣어주면된다.

 

 

MongoService

 

몽고서비스부분이다. 

 

몽고에서 데이터CRUD작업을 여기서 다 한다.

 

먼저 MongoTemplate를 주입을 받는다.

 

mongoTemplate에 우리가 CRUD를 할수있는 기능들이 전부 존재한다. 

 

그 예로, 데이터를 넣을때,  mongoTemplate.insert() 쿼리를 날리면 된다.

 

실제 몽고DB화면이다.

 

db의 mongoOrderInfo 컬렉션에 제대로 데이터가 들어온걸 확인 할수가있다.

 

 

 

MongoDB는 쿼리를 날릴때 다음과 같이 사용한다.

 

예시로 데이터를 찾을때,

 

Query를 열어  Criteria.where 구문을 사용한다.

 

where은 조건으로,  예시론 "name"이  "태홍"인 데이터를 찾고, 담을 DTO는 MongoOrderInfo로 설정했다.

 

 

반응형