프로그래밍/[ Python ]

[Python] MongoDB 다루기

gooooooood 2024. 12. 3. 15:42
반응형

Python에서 MongoDB를 사용하려면 **pymongo**라는 라이브러리를 사용합니다. pymongo는 MongoDB와 Python 간의 상호작용을 쉽게 해주는 라이브러리입니다. MongoDB는 NoSQL 데이터베이스로, JSON 형식의 데이터를 저장하고 관리하는 데 사용됩니다.

아래는 Python과 MongoDB를 연동하여 데이터를 CRUD(Create, Read, Update, Delete)하는 예제 코드입니다. 이 예제에서는 pymongo 라이브러리를 사용하여 MongoDB와 상호작용하는 방법을 단계별로 설명합니다.

1. pymongo 설치

먼저 pymongo 라이브러리를 설치해야 합니다. 터미널에서 아래 명령어를 실행하세요.

pip install pymongo

2. MongoDB에 연결하기

MongoDB를 사용하려면 pymongo.MongoClient를 사용해 MongoDB 서버에 연결해야 합니다.

from pymongo import MongoClient

# MongoDB 서버에 연결 (localhost 기본 포트: 27017)
client = MongoClient("mongodb://localhost:27017/")

# 'mydatabase'라는 데이터베이스를 선택
db = client["mydatabase"]

위 코드는 MongoDB 서버에 연결하고, mydatabase라는 데이터베이스를 선택합니다. 만약 데이터베이스가 없다면 MongoDB는 자동으로 새 데이터베이스를 생성합니다.

3. 컬렉션 선택

MongoDB에서 데이터를 저장하는 단위는 "컬렉션"입니다. MongoDB는 테이블과 유사한 역할을 하며, 문서(레코드)를 저장합니다.

# 'mycollection' 컬렉션을 선택
collection = db["mycollection"]

위 코드에서는 mycollection이라는 컬렉션을 선택합니다. 컬렉션이 존재하지 않으면 MongoDB는 자동으로 새 컬렉션을 생성합니다.

4. 데이터 삽입 (Create)

MongoDB에 데이터를 삽입하려면 insert_one() 또는 insert_many() 메서드를 사용합니다.

 

단일 문서 삽입

# 하나의 문서 삽입
document = {"name": "Alice", "age": 25, "city": "New York"}
result = collection.insert_one(document)

# 삽입된 문서의 ID 출력
print("Inserted document ID:", result.inserted_id)

 

여러 문서 삽입

# 여러 문서 삽입
documents = [
    {"name": "Bob", "age": 30, "city": "Los Angeles"},
    {"name": "Charlie", "age": 35, "city": "Chicago"}
]

result = collection.insert_many(documents)

# 삽입된 문서들의 ID 출력
print("Inserted document IDs:", result.inserted_ids)

5. 데이터 조회 (Read)

데이터를 조회하는 방법은 find_one() 또는 find() 메서드를 사용합니다.

 

단일 문서 조회

# 특정 조건에 맞는 하나의 문서 조회
query = {"name": "Alice"}
document = collection.find_one(query)

print(document)
 
여러 문서 조회
# 조건에 맞는 모든 문서 조회
query = {"age": {"$gte": 30}}  # 나이가 30 이상인 사람들
documents = collection.find(query)

for doc in documents:
    print(doc)

find()는 조건에 맞는 모든 문서를 조회하며, 반환되는 것은 커서(Cursor) 객체입니다. 이 객체는 반복문을 통해 각 문서를 하나씩 출력할 수 있습니다.

6. 데이터 업데이트 (Update)

데이터를 업데이트하려면 update_one() 또는 update_many() 메서드를 사용합니다.

 

단일 문서 업데이트

# 'name'이 'Alice'인 문서의 'age'를 26으로 업데이트
query = {"name": "Alice"}
new_values = {"$set": {"age": 26}}

result = collection.update_one(query, new_values)

print("Matched:", result.matched_count)  # 업데이트된 문서의 수
print("Modified:", result.modified_count)  # 실제로 수정된 문서의 수

 

여러 문서 업데이트

# 'age'가 30 이상인 모든 사람의 도시를 'San Francisco'로 변경
query = {"age": {"$gte": 30}}
new_values = {"$set": {"city": "San Francisco"}}

result = collection.update_many(query, new_values)

print("Matched:", result.matched_count)  # 조건에 맞는 문서 수
print("Modified:", result.modified_count)  # 실제로 수정된 문서 수

 

7. 데이터 삭제 (Delete)

데이터를 삭제하려면 delete_one() 또는 delete_many() 메서드를 사용합니다.

 

단일 문서 삭제

# 'name'이 'Alice'인 문서 삭제
query = {"name": "Alice"}
result = collection.delete_one(query)

print("Deleted:", result.deleted_count)  # 삭제된 문서 수

 

여러 문서 삭제

# 'age'가 30 이상인 모든 사람 삭제
query = {"age": {"$gte": 30}}
result = collection.delete_many(query)

print("Deleted:", result.deleted_count)  # 삭제된 문서 수

 

8. 데이터베이스 및 컬렉션 삭제

MongoDB에서 데이터베이스나 컬렉션을 삭제하는 방법도 있습니다.

 

컬렉션 삭제

# 컬렉션 삭제
collection.drop()

 

데이터베이스 삭제

# 데이터베이스 삭제
client.drop_database("mydatabase")

 

9. 전체 코드 예시

from pymongo import MongoClient

# MongoDB 서버에 연결
client = MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]

# 데이터 삽입
document = {"name": "Alice", "age": 25, "city": "New York"}
collection.insert_one(document)

# 데이터 조회
query = {"name": "Alice"}
document = collection.find_one(query)
print(document)

# 데이터 업데이트
query = {"name": "Alice"}
new_values = {"$set": {"age": 26}}
collection.update_one(query, new_values)

# 데이터 삭제
query = {"name": "Alice"}
collection.delete_one(query)

# 데이터베이스와 컬렉션 삭제
client.drop_database("mydatabase")

 

주의 사항

  1. MongoDB 서버 실행: MongoDB가 로컬 머신에 설치되어 있어야 하며, 기본 포트(27017)에서 실행되고 있어야 합니다. 만약 클라우드 MongoDB 서비스를 사용한다면 연결 문자열을 해당 서비스에 맞게 설정해야 합니다.
  2. 쿼리 연산자: MongoDB에서는 다양한 쿼리 연산자를 제공하며, 예를 들어 {"$gte": 30}는 "30 이상"이라는 조건을 의미합니다. 복잡한 조건을 설정하려면 이러한 연산자를 활용할 수 있습니다.
  3. 성능 고려: MongoDB는 대규모 데이터셋을 처리할 수 있지만, 인덱싱을 적절히 사용하여 쿼리 성능을 최적화하는 것이 중요합니다.

이로써 Python에서 MongoDB를 사용하는 기본적인 방법을 설명했습니다. 추가적으로 MongoDB의 기능에 대해 더 알아보고 싶다면 공식 문서나 관련 자료를 참고하는 것도 좋은 방법입니다.

반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] Sleep 함수 사용법에 대해  (0) 2024.12.02
[Python] statistics Module  (0) 2024.11.27
[Python] Requests Module  (0) 2024.11.26
[Python] MySQL  (0) 2024.11.25
[Python] Matplotlib  (0) 2024.11.22