Hayden's Archive

[MongoDB/Java] MongoDB에 JSON 형식 데이터 삽입하기 본문

Study/DB

[MongoDB/Java] MongoDB에 JSON 형식 데이터 삽입하기

_hayden 2020. 10. 22. 11:02

getDB()로 몽고DB에 문서를 삽입하는 실습을 했다.

결과는 성공적이었지만 getDB()가 사용이 지양되는(deprecated) 메소드였다.

(database, col 변수에는 각각 몽고DB의 database, collection 이름으로 미리 할당해뒀다.)

public void testMongoInsert() {
	@SuppressWarnings("deprecation")
	DB DB = mongoClient.getDB(database);
	DBCollection collection = DB.getCollection(col);
	String json = "{'name' : 'elsa',"
			+ "'age' : '20'," 
			+ "'family' : {'person1' : 'anna', 'person2' : 'olaf'}}}";
	DBObject dbObject;

	dbObject = (DBObject)JSON.parse(json);
	collection.insert(dbObject);
}

 

그래서 대체할 수 있는 메소드를 찾아봤다.

찾아봤더니 getDatabase() 메소드를 사용할 수 있었다.

mongodb.github.io/mongo-java-driver/4.1/apidocs/mongodb-driver-sync/com/mongodb/client/MongoClient.html

 

MongoDatabase 의 getCollection() 메소드의 반환값도 기존과 달랐다.

 

또 MongoCollection 에는 insert() 메소드가 없고 insertMany(), insertOne(), listIndexes() 메소드가 있다.

 

기술은 계속해서 변화하고 낡은 기술은 사라지게 되어 있으며

유지보수를 고려했을 때도 낡은 기술은 과감히 버려야 한다.

따라서 deprecated인 코드를 버리고 바뀐 코드를 써보고자 한다. 

 

public void testMongoInsert() {
	MongoDatabase DB = mongoClient.getDatabase(database);
	MongoCollection<Document> collection = DB.getCollection(col);
	String json = "{'person1' : 'anna', 'person2' : 'olaf'}}";
	Document document = new Document()
				.append("name", "elsa")
				.append("age", "20")
				.append("family", JSON.parse(json));
	collection.insertOne(document);

 

MongoDB Compass로 확인해보니 잘 들어와있다. 성공~!