- 전체
- JAVA 일반
- JAVA 수학
- JAVA 그래픽
- JAVA 자료구조
- JAVA 인공지능
- JAVA 인터넷
- Java Framework
- Java GUI (AWT,SWING,SWT,JFACE)
- SWT and RCP (web RAP/RWT)[eclipse], EMF
JAVA 자료구조 MongoDB CRUD with Java Driver 몽고디비 java 연결 및 CRUD 테스트
2020.09.21 21:49
MongoDB CRUD with Java Driver
몽고디비 java 연결 및 CRUD 테스트
1. 다운로드 Java Driver
GitHub에서 최신 MongoDB Java Driver를 다운로드 받습니다.
https://github.com/mongodb/mongo-java-driver/downloads
2. MongoDB Connection
|
MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("test"); boolean auth = db.authenticate("test", "test".toCharArray()); |
* MongoClient 클래스 이해
- 버전 2.10.0 이전의 Java Driver에서는 MongoClient 대신에 Mongo 클래스를 사용하여야 함.
- MongoClient는 내부적으로 connection pooling을 사용하기 때문에, 전 JVM에 걸처 하나의 인스턴스만 생성하면 됨.
- MongoClient는 multi-thread 환경에서 안전함.
- 여러 인스턴스를 생성한 경우, max connection과 같은 리소스에 제한을 두어야 하며, 인스턴스 사용후 MongoClient.close()를 콜하여 사용된 모든 리소스를 클린업하여야 함.
|
MongoClient mongo1 = new MongoClient(Arrays.asList(new ServerAddress("localhost",27017), new ServerAddress("localhost", 27018), new ServerAddress("localHost",27019))); |
3. MongoDB Authentication
|
boolean auth = db.authenticate("test", "test".toCharArray()); |
* MongoDB가 'secure mode'를 사용하는 경우에는 상기와 같이 인증 절차를 거쳐야 함.
- name 및 password가 유효한 경우에서 true를 리턴함.
4. MongoDB Collection
사용하고자 하는 Collection을 얻기 위해서는, 다음과 같이 getCollection(String collectionName) 메소드에 컬렉션 명을 인자로 설정하면 됩니다. 컬렉션으로 우리는 데이터 저장, 업데이트와 같은 작업을 할 수 있게 됩니다.
참고로 Collection은 RDBMS의 테이블과 같은 의미입니다.
|
DBCollection coll = db.getCollection("test"); |
5. MongoDB Insertion(Save)
다음과 같은 JSON 포맷의 데이터를 BasicDBObject 클래스를 이용하여, document를 생성한 후 Collection을 이용하여 MongoDB에 저장하면 됩니다.
예제에서는 inner(nested) document를 이용하였습니다.
|
{ "name": "william", "sex" : "male", "createDate": "2013-07-26 23:52:11", "contact": { "mobile":"010-1111-2222", "fax": "02-111-3333" } } |
|
BasicDBObject document = new BasicDBObject("name", "MongoDB"). append("sex", "male"). append("createDate", new Date()). append("contact", new BasicDBObject("mobile","010-1111-2222").append("fax", "02-111-3333"));
coll.insert(document); |
6. MongoDB findOne()
앞에서 저장한 document를 쿼리하기 위해서는 findOne(BasicObject obj)을 콜하면 됩니다. 예제에서는 BasicDBObject를 이용하여 name이 william이라는 쿼리를 생성하였습니다.
또는 인자가 없는 findOne() 메소드를 콜하면, 컬렉션의 첫번째 document를 리턴합니다.
|
BasicDBObject findQuery = new BasicDBObject("name", "william");
DBObject mydoc = coll.findOne(document); System.out.println("Document by findOne(): " + mydoc); |
-Id element는 MongoDB에 의해 자동으로 생성되는 것으로, MongoDB 내부적으로 사용됩니다.
또한 "_"/"$" 도 MongoDB에 의해 보존된 element입니다.
MongoDB는 date type을 제공하는데, createDate 필드 값에 "$date"가 사용된 것을 확인할 수 있습니다.
|
{ "_id" : { "$oid" : "51f284a7abca726cfc5cb972"} , "name" : "william" , "sex" : "male" , "createDate" : { "$date" : "2013-07-26T14:16:07.828Z"} , "contact" : { "mobile" : "010-1111-2222" , "fax" : "02-111-3333"} } |
7. MongoDB Update
update(queryObject, newObject)를 사용하여 예제에서는 name을 william에서 william hong으로 변경하였습니다.
첫번째 인자는 변경할 document를 찾는 BasicDBObject를 두번재 인자에는 변경될 필드 값을 가진 BasicDBObject를 설정하면 됩니다.
* 주의: 특정 필드값을 변경하고자 할때는 예제에서 처럼 $set을 사용하여야합니다.
만약에 coll.update(findquery, updateObj) 대신에 coll.updaqte(findQuery, newDocument)를 사용하면, document 자체을 새 document를 대체하게 됩니다.
|
BasicDBObject findQuery = new BasicDBObject("name", "william");
BasicDBObject newDocument = new BasicDBObject("name", "william hong");
BasicDBObject updateObj = new BasicDBObject("$set", newDocument);
coll.update(findQuery, updateObj);
System.out.println("Document Updated: " + coll.findOne(newDocument)); |
8. Using Cursor
다음은 DBCursor를 이용하여 컬렉션에 있는 모든 documents를 쿼리하는 예제입니다.
findOne(DBObject query)는 DBObject를 리턴하고, find(DBObject query)는 DBCursor를 리턴합니다.
|
DBCursor cursor = coll.find();
try{ while(cursor.hasNext()){ System.out.println("using cursor: " + cursor.next()); } }finally{ cursor.close(); } |
9. MongoDB remove
name = william인 document를 찾아 삭제하게 됩니다.
|
BasicDBObject findQuery = new BasicDBObject("name", "william"); coll.remove(findQuery); |
10. 예제
|
package com.hjh.mongodb;
import java.net.UnknownHostException; import java.util.Arrays; import java.util.Date;
import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import com.mongodb.ServerAddress;
public class HelloWorld {
public static void main(String[] args) throws UnknownHostException{
/* * 1. MongoDB Connection */ MongoClient mongo = new MongoClient("localhost", 27017);
/* Replica Set Connection MongoClient mongo1 = new MongoClient(Arrays.asList(new ServerAddress("localhost",27017), new ServerAddress("localhost", 27018), new ServerAddress("localHost",27019))); */
DB db = mongo.getDB("test"); /* * 2. MongoDB Authentication */ boolean auth = db.authenticate("test", "test".toCharArray());
System.out.println("Authentication Result: " + auth);
/* * 3. MongoDB Collection */ DBCollection coll = db.getCollection("user");
/* * 4. MongoDB Insertion * * { * "name": "william", * "sex" : "male", * "createDate": "2013-07-26 23:52:11", * "contact": { * "mobile":"010-1111-2222", * "fax": "02-111-3333" * } * } */ BasicDBObject document = new BasicDBObject("name", "william"). append("sex", "male"). append("createDate", new Date()). append("contact", new BasicDBObject("mobile","010-1111-2222").append("fax", "02-111-3333"));
coll.insert(document);
/* * 5. MongDB findOne() */ BasicDBObject findQuery = new BasicDBObject("name", "william");
DBObject mydoc = coll.findOne(findQuery); System.out.println("Document by findOne(): " + mydoc);
/* * 6. MongoDB Update() */
BasicDBObject newDocument = new BasicDBObject("name", "william hong"); BasicDBObject updateObj = new BasicDBObject("$set", newDocument);
coll.update(findQuery, updateObj);
System.out.println("Document Updated: " + coll.findOne(newDocument));
/* * 7. Using Cursor */ DBCursor cursor = coll.find();
try{ while(cursor.hasNext()){ System.out.println("using cursor: " + cursor.next()); } }finally{ cursor.close(); }
/* * 8. MongoDB remove() */ BasicDBObject query = new BasicDBObject("name", "william hong"); coll.remove(query); }
} |
11. Maven Dependency
|
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>2.10.1</version> </dependency> </dependencies> |
* 쿼리를 작성할때 필요한 Query Selectors에 대한 상세한 정보는 MongDB 홈페이지를 참조하세요.
http://docs.mongodb.org/manual/reference/operator/
[출처] http://blog.naver.com/willygwu2003/130173010855
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 1 |
numerical analysis with java examples - turhancoban.com.pdf
| 졸리운_곰 | 2016.06.07 | 512 |

