PyMongo
를 설치해야 합니다.pip install pymongo
<username>
, <password>
, <dbname>
부분을 실제 정보로 변경해야 합니다.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
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>5.1.1</version> <!-- 작성 시점 최신 안정 버전, 실제 사용 시 최신 버전 확인 -->
</dependency>
</dependencies>
dependencies {
implementation("org.mongodb:mongodb-driver-sync:5.1.1") // 작성 시점 최신 안정 버전
}
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
async/await
나 Promise를 적극 활용합니다.
Python의 PyMongo는 기본적으로 동기적으로 동작하지만, Motor
와 같은 비동기 드라이버도 존재합니다.
Java 드라이버도 동기(sync)와 비동기(async/reactive) 버전을 모두 제공합니다.
애플리케이션의 특성에 맞게 적절한 방식을 선택해야 합니다.org.bson.Document
객체를 사용합니다.try...except/catch
, Java: try...catch
)