PromleeBlog
sitemap
aboutMe

posting thumbnail
Python/Java와 MongoDB 연동 - MongoDB 올인 14일차
Python/Java with MongoDB - All-in Day 14

📅

🚀

들어가기 전에 🔗

지난 13일차에는 Node.js 환경에서 MongoDB Atlas 클러스터에 접속하고 다양한 CRUD 작업을 수행하는 상세한 방법을 함께 배웠습니다.
오늘은 또 다른 인기 프로그래밍 언어인
Python
Java
에서는 MongoDB를 어떻게 활용할 수 있는지, 그 기본적인 연결 방법과 간단한 사용 예시를
간략하게
살펴보는 시간을 갖겠습니다.
각 언어마다 고유의 MongoDB 드라이버가 있으며, 기본적인 연결 원리나 Atlas 연결 문자열을 사용하는 방식은 Node.js와 매우 유사합니다.

🚀

1. Python에서 MongoDB Atlas 연결하기 (PyMongo) 🔗

Python에서 MongoDB를 사용하기 위해서는 공식 드라이버인 PyMongo를 설치해야 합니다.

PyMongo 설치 🔗

터미널 또는 명령 프롬프트에서 pip를 사용하여 PyMongo를 설치합니다.
pip install pymongo

Atlas 연결 및 기본 작업 예시 (Python) 🔗

Node.js와 마찬가지로 Atlas에서 발급받은 연결 문자열을 사용합니다. <username>, <password>, <dbname> 부분을 실제 정보로 변경해야 합니다.
index.py
from pymongo import MongoClient
import datetime # 날짜/시간 사용 예시를 위해
 
 # 1. Atlas 연결 문자열 (실제 값으로 대체)
uri = "mongodb+srv://myAppUser:yourStrongPassword@myfirstatlascluster.xxxxx.mongodb.net/myAppDB?retryWrites=true&w=majority"
 
  # 2. MongoClient 인스턴스 생성 및 연결
  # PyMongo 3.X 버전에서는 client.close()를 명시적으로 호출하는 것이 중요합니다.
  # with 문을 사용하면 자동으로 close를 처리할 수 있지만, 여기서는 기본 흐름을 보여줍니다.
client = None # finally 블록에서 사용하기 위해 외부에 선언
try:
    client = MongoClient(uri)
    
    # 3. 연결 테스트 (선택 사항 - 서버 정보 가져오기)
    # client.admin.command('ping') # PyMongo 4.x+
    server_info = client.server_info() # PyMongo 3.x 호환
    print(f"MongoDB Atlas에 성공적으로 연결되었습니다! 서버 버전: {server_info['version']}")
 
    # 4. 데이터베이스 및 컬렉션 객체 가져오기
    db = client.myAppDB # 연결 문자열에 지정된 DB 또는 다른 DB 이름
    users_collection = db.users
 
    # 5. 간단한 작업 예시: 문서 하나 삽입
    new_user = {
        "name": "Alice",
        "age": 28,
        "email": "alice@example.com",
        "createdAt": datetime.datetime.now(datetime.timezone.utc) # UTC 시간 사용 권장
    }
    insert_result = users_collection.insert_one(new_user)
    print(f"새로운 사용자 추가됨. ID: {insert_result.inserted_id}")
 
    # 6. 간단한 작업 예시: 문서 하나 조회
    found_user = users_collection.find_one({"name": "Alice"})
    if found_user:
        print("사용자 조회:", found_user)
 
except Exception as e:
    print(f"MongoDB 작업 중 오류 발생: {e}")
 
finally:
    # 7. 연결 해제
    if client:
        client.close()
        print("MongoDB 연결이 해제되었습니다.")
 
실행 방법
python3 index.py
실행 결과
실행 결과

🚀

2. Java에서 MongoDB Atlas 연결하기 (MongoDB Java Driver) 🔗

Java에서 MongoDB를 사용하려면 MongoDB Java 드라이버 의존성을 프로젝트에 추가해야 합니다. (예: Maven 또는 Gradle 사용)

MongoDB Java 드라이버 의존성 추가 🔗

➡️

Maven 🔗

pom.xml
<dependencies> 
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver-sync</artifactId>
        <version>5.1.1</version> <!-- 작성 시점 최신 안정 버전, 실제 사용 시 최신 버전 확인 -->
    </dependency>
</dependencies>
➡️

Gradle 🔗

build.gradle
dependencies {
    implementation("org.mongodb:mongodb-driver-sync:5.1.1") // 작성 시점 최신 안정 버전
}
(드라이버 버전은 공식 문서에서 최신 안정 버전을 확인하여 사용하는 것이 좋습니다.)

Atlas 연결 및 기본 작업 예시 (Java) 🔗

Java에서도 Atlas 연결 문자열을 사용합니다.
MongoDBJavaExample.java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document; // BSON 문서를 나타내는 클래스
import java.util.Date;
 
public class MongoDBJavaExample {
 
    public static void main(String[] args) {
        // 1. Atlas 연결 문자열 (실제 값으로 대체)
        String uri = "mongodb+srv://myAppUser:yourStrongPassword@myfirstatlascluster.xxxxx.mongodb.net/myAppDB?retryWrites=true&w=majority";
 
        // 2. MongoClient 인스턴스 생성 및 연결 (try-with-resources 사용 권장)
        try (MongoClient mongoClient = MongoClients.create(uri)) {
            
            // 3. 연결 테스트 (선택 사항 - 데이터베이스 이름 목록 가져오기)
            for (String dbName : mongoClient.listDatabaseNames()) {
                System.out.println("DB Name: " + dbName);
            }
            System.out.println("MongoDB Atlas에 성공적으로 연결되었습니다!");
 
            // 4. 데이터베이스 및 컬렉션 객체 가져오기
            MongoDatabase database = mongoClient.getDatabase("myAppDB");
            MongoCollection<Document> usersCollection = database.getCollection("users");
 
            // 5. 간단한 작업 예시: 문서 하나 삽입
            Document newUser = new Document("name", "Bob")
                                 .append("age", 35)
                                 .append("email", "bob@example.com")
                                 .append("createdAt", new Date());
            usersCollection.insertOne(newUser);
            System.out.println("새로운 사용자 추가됨. ID: " + newUser.getObjectId("_id").toString());
 
 
            // 6. 간단한 작업 예시: 문서 하나 조회
            Document foundUser = usersCollection.find(new Document("name", "Bob")).first();
            if (foundUser != null) {
                System.out.println("사용자 조회: " + foundUser.toJson());
            }
 
        } catch (Exception e) {
            System.err.println("MongoDB 작업 중 오류 발생: " + e);
        }
        // try-with-resources 구문으로 인해 MongoClient는 자동으로 닫힙니다.
        System.out.println("MongoDB 연결이 (자동으로) 해제되었습니다.");
    }
}
실행 방법
javac MongoDBJavaExample.java
java MongoDBJavaExample

🚀

각 언어별 특징 및 고려사항 🔗


🚀

MongoDB 올인 시리즈를 마치며 🔗

1일차 MongoDB 소개를 시작으로, 아키텍처, 설치, 데이터 모델링, CRUD 기본 작업, 쿼리와 집계, 성능 최적화, 복제 세트와 샤딩 같은 고급 기능, 보안, Atlas 클라우드 서비스, 주요 툴과 유틸리티, 그리고 오늘 Node.js, Python, Java와의 연동까지 정말 많은 내용을 함께 살펴보았습니다.
이 시리즈가 여러분께서 MongoDB라는 강력한 NoSQL 데이터베이스를 이해하고 활용하는 데 조금이나마 도움이 되었기를 진심으로 바랍니다.
물론 이 시리즈에서 다룬 내용은 MongoDB의 방대한 기능 중 일부에 불과합니다.
하지만 탄탄한 기본기를 다지는 데는 충분했을 것이라 생각합니다.
데이터베이스 기술은 끊임없이 발전하고 있으며, MongoDB 또한 새로운 기능과 개선 사항들이 계속 추가되고 있습니다.
오늘 배운 내용을 바탕으로 공식 문서를 꾸준히 참고하시고, 실제 프로젝트에 적용해보면서 경험을 쌓아나가시는 것이 중요합니다.
다양한 문제를 해결하고, 더 효율적인 데이터 관리 방법을 고민하는 과정에서 여러분은 분명 뛰어난 데이터 전문가로 성장하실 수 있을 겁니다.

참고 🔗