2025. 10. 21. 15:06ㆍDB/NoSQL
[LG U+ 유레카 3기] MongoDB 기본 CRUD 실습
이번 실습에서는 MongoDB 자바 드라이버를 사용하여 CRUD(Create, Read, Update, Delete) 기능을 직접 구현해보았다.
MongoDB는 NoSQL 기반의 문서형 데이터베이스로, 테이블 대신 Collection과 Document 구조를 사용한다.

❶ 실습 환경 설정
MongoDB가 로컬 환경에 설치되어 있어야 하며, 자바 프로젝트에서는 Maven으로 의존성을 추가했다.
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.5.0</version>
</dependency>
자바 버전은 17로 설정했고, 기본 연결 문자열은 mongodb://localhost:27017을 사용했다.
❷ 데이터베이스 연결 및 컬렉션 접근
MongoDB 클라이언트를 생성하고, 데이터베이스(madang)와 컬렉션(book)을 가져온다.
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("madang");
MongoCollection<Document> collection = database.getCollection("book");
이 과정을 통해 MongoDB 서버에 연결하고, 해당 데이터베이스 내부의 book 컬렉션에 접근할 수 있다.
❸ CRUD 실습 코드
import org.bson.Document;
import org.bson.conversions.Bson;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Updates.set;
import static com.mongodb.client.model.Updates.combine;
import com.mongodb.client.*;
public class Test {
private static final String CONNECTION_STRING= "mongodb://localhost:27017";
private static final String DATABASE_NAME ="madang";
private static final String CONNECTION_NAME = "book";
public static void main(String[] args) {
MongoClient mongoClient = MongoClients.create(CONNECTION_STRING);
MongoDatabase database = mongoClient.getDatabase(DATABASE_NAME);
MongoCollection<Document> collection = database.getCollection(CONNECTION_NAME);
// 수정
Bson filter = eq("bookid", 11);
Bson update = combine(
set("bookname","uplus도서2"),
set("publisher","멀캠2"),
set("price",10000)
);
collection.updateOne(filter, update);
mongoClient.close();
}
}
이 코드는 MongoDB의 updateOne() 메서드를 사용하여 특정 도서 정보를 수정하는 예시이다.
만약 해당 bookid가 존재하지 않으면 아무 문서도 변경되지 않는다.
❹ BookDto 클래스
package dto;
public class BookDto {
private int bookId;
private String bookName;
private String publisher;
private int price;
public BookDto() {}
public BookDto(int bookId, String bookName, String publisher, int price) {
this.bookId = bookId;
this.bookName = bookName;
this.publisher = publisher;
this.price = price;
}
@Override
public String toString() {
return "BookDto [bookId=" + bookId + ", bookName=" + bookName +
", publisher=" + publisher + ", price=" + price + "]";
}
}
MongoDB의 Document 데이터를 자바 객체로 변환하기 위한 DTO 클래스이다.
RDB의 행(row)에 해당하는 Document를 Java 객체로 매핑할 때 유용하다.

❺ CRUD 동작 예시
| 기능 | 메서드 | 예시 |
|---|---|---|
| 등록 (Create) | insertOne() |
collection.insertOne(document) |
| 조회 (Read) | find() |
collection.find(eq("bookid",1)) |
| 수정 (Update) | updateOne() |
collection.updateOne(filter, update) |
| 삭제 (Delete) | deleteOne() |
collection.deleteOne(eq("bookid",11)) |
MongoDB는 스키마가 고정되지 않아, 새로운 필드를 자유롭게 추가하거나 제거할 수 있는 유연성을 가진다.
❻ 개념 정리
- Document : MongoDB에서의 단일 데이터 단위 (JSON 형태).
- Collection : Document들의 집합, RDB의 Table과 유사.
- Database : 여러 Collection의 집합.
- BSON : MongoDB 내부에서 데이터를 저장하는 이진 형태의 JSON.
- Bson Filter : MongoDB의 쿼리 조건 객체 (예:
eq(),gt()등).
❼ 실습 요약
이번 실습을 통해 Java에서 MongoDB를 직접 제어하는 방법을 익혔다.
SQL이 아닌 명령형 코드로 데이터를 조작하며, NoSQL의 유연한 구조와 문서지향적 설계를 이해할 수 있었다.
'DB > NoSQL' 카테고리의 다른 글
| [LG U+ 유레카 3기]MongoDB Compass CRUD 실습 정리 (0) | 2025.10.21 |
|---|---|
| NoSQL과 MongoDB 이해 (0) | 2025.10.21 |