지난 시간에 이어 몽고 DB를 사용해 보도록 하겠습니다.
일단 java Driver를 다운로드하여야 합니다.
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>3.11.0</version>
</dependency>
자세한 다운로드 정보는 아래 링크를 참고 하시면 됩니다.
https://docs.mongodb.com/ecosystem/drivers/java/
Java MongoDB Driver — MongoDB Ecosystem
MongoDB Compatibility The following compatibility table specifies the recommended version(s) of the MongoDB Java driver for use with a specific version of MongoDB. The first column lists the driver version(s). Java Driver Version MongoDB 4.2 MongoDB 4.0 Mo
docs.mongodb.com
라이브러리는 3개가 설치되는데 정보는 다음과 같습니다.
mongodb-driver-sync-3.11.0.jar
mongodb-dirver-core-3.11.0.jar
bson-3.11.0.jar
지난번에 설치 한 MongoDB에 접속 설정은 다음과 같습니다.
MongoClient mongoClient = MongoClients.create();
현재는 보안 설정을 하지 않아서 MongoClients.create()를 하면 DB 세션이 생성 됩니다.
보안 설정은 가이드를 봤는데 연구가 필요할 것 같아 실전에서 다시 해보도록 하겠습니다.
오류 없이 세션 생성되었다면 somework라는 테스트 데이터 베이스를 사용해보겠습니다.
사용방법은 아래와 같이 getDatabase 함수를 사용하면 됩니다.
MongoDatabase mongoDatabase = mongoClient.getDatabase("somework");
데이터 베이스를 코드에서 만드는 것을 찾아보았지만 차지 못했고
지난번에 설치한 툴을 이용해 somework를 만들었습니다.
somework에 사용할 collection을 만들겠습니다.
collection은 RDBMS 인 경우 table의 개념이라고 생각하시면 됩니다.
처음 somework를 만들 때 somework_data1이라는 collection을 만들었습니다.
그래서 여기서는 somework_data2를 만들어 보도록 하겠습니다.
private void createCollection(MongoDatabase mongoDatabase) {
try {
mongoDatabase.createCollection(COLLECTION_NAME);
System.out.println("## " + COLLECTION_NAME + " on Create");
} catch (Exception e) {
System.out.println("## " + COLLECTION_NAME + " already");
}
}
collection 생성까지 완료되었다면 데이터를 insert 해보도록 하겠습니다. 위 메서드는 somework_data2 가 없으면 생성하도록 했습니다.
MongoCollection<Document> collections = mongoDatabase.getCollection(COLLECTION_NAME);
document = new Document("name", "myMongos")
.append("type", "mongo")
.append("version", "3.11.0")
.append("date", "2019-09-08");
collections.insertOne(document);
데이터가 추가됩니다. 위에서처럼 Doocument 객체를 사용해 입력 데이터를 정의하고 insertOne 메서드를 사용하면
아래 저장된 데이터를 보면 key, value 형식으로 저장이 되고 _id라는 유일 키가 생성됩니다.
이후에는 _id를 이용해 업데이트 가능합니다.
그래서 위 collections.insertOne(documentcollections.insertOne(document)을 반복 실행하면 같은 데이터가 중복되어 들어가는 현상 확인이 됩니다.
새로운 데이터를 insert 하도록 코드 추가했습니다.
name 이 다른 경우 추가하도록 했습니다.
MongoClient mongoClient = MongoClients.create();
MongoDatabase mongoDatabase = mongoClient.getDatabase("somework");
createCollection(mongoDatabase);
MongoCollection collections = mongoDatabase.getCollection(COLLECTION_NAME);
Document document = null;
document = new Document("name", "myCasandra");
if(collections.find(document).first() == null) {
System.out.println("## make myCasandra");
document.append("type", "casandra").append("version", "1.00.2").append("date", "2019-09-09");
collections.insertOne(document);
} else {
System.out.println(document.toJson());
}
update, delete의 경우 Bson 객체를 사용해서 할 수 있습니다.
Bson finder = new Document("name", "myMongo");
Bson values = new Document("version", "4.0");
collections.updateMany(filter, values);
위와 같이 하시면 myMongo의 version이 업데이트되는 것을 확인할 있습니다.
우선 여기까지만 테스트를 해보았습니다.
다른 테스트 사항이 많이 있는데요
그 부분들은 실전에서 사용해보면서 정보 업데이트하겠습니다.
위 MongoDB Driver 다운로드하고 가이드를 따라가면 해보시면 도움이 될 것 같습니다.
여기까지 간략한 MongoDB 사용 방법 입었습니다.