Hello 👋

🧑🏻‍💻 A Developers who create code that changes the world

Database/MongoDB 5

[MongoDB] HTTP, gRPC ObjectId 타입 인식 문제

* MongoDB의 _id나 특정 키가 ObjectId 타입일 경우, 이를 문자열로 변환하지 않고 그대로 전송하면 클라이언트에서 처리할 수 없음 * 반대로 클라이언트에서 문자열로 보낸 값을 MongoDB 쿼리에서 ObjectId로 변환하지 않으면 쿼리 결과가 제대로 반환되지 않는 문제가 발생 데이터를 API로 주고받을 때, MongoDB 필드 중 ObjectId인 경우에는 서버/클라이언트에서 변환 처리를 명시적으로 해줘야함 이를 해결하기 위해, JSON 형식의 데이터를 처리할 때 _id 필드를 ObjectId 로 변환해주는 로직이 필요def convert(value): if isinstance(value, dict): for key, item in value.items(): ..

Database/MongoDB 2025.01.08

[Python] 200대 상태 코드 처리 오류

API에서 고객 데이터를 삭제하는 DELETE 요청을 처리하던 중, 데이터는 정상적으로 삭제되었지만 " Delete failed "라는 메시지만 반환되었음, 전체적인 모든 코드들이 이렇게 짜여 있었기 때문에 한번 크게 리팩토링 해야할 필요가 있었음if code == 200: return {'message': 'Customer deleted successfully'}, 200else: return {'message': 'Delete failed'}, 500 MongoDB 응답 값을 출력해봤고, 삭제가 정상적으로 완료되었음에도 불구하고 204 상태 코드가 반환된다는 것을 확인DELETE 요청이 성공적으로 처리되었을 때 204 No Content도 반환될 수 있기 때문에, 이를 반영해 코드를 아래처..

Database/MongoDB 2024.09.20

[MongoDB] MongoDB ReplicaSet 기본 구성

MongoDB ReplicaSetReplica Set (몽고 이중화)가장 일반적인 이중화 방법, 데이터를 복제하여 장애 복구몽고디비를 사용하면 레플리카셋을 생성함으로써 레플리카를 설정할 수 있음레플리카셋은 클라이언트 요청을 처리하는 프라이머리 서버 한 대와, 프라이머리 데이터의 복사본을 갖는 세컨더리 서버 여러대로 이루어짐프라이머리 서버에 장애가 발생하면 세컨더리 서버를 자신들 중에서 새로운 프라이머리 서버를 선출할 수 있음복제를 사용하는 상태에서 서버가 다운되면, 복제 셋에 있는 다른 서버를 통해 데이터에 접근할 수 있음서버상의 데이터가 손상되거나 접근할 수 없는 상태라면 복제 셋의 다른 멤버로부터 새로운 복제 데이터를 만들 수 있음Replica Set 설계 방법복제 셋을 설계하기에 앞서 과반수 개념을..

Database/MongoDB 2024.09.11

[MongoDB] MongoDB 백업 및 복원

MongoDB 작업 중, 신중하지 못했던 데이터 작업으로 컬렉션의 모든 데이터를 Delete 함 따로 백업을 해놓지 않은 데이터라 복구할 수 없었음 데이터 작업에 신중할 필요가 있지만, 무엇보다 안전하게 하기 위해 백업 전략이 필요 mongodump로 백업하기 mongodump는 MongoDB 데이터를 BSON(Binary JSON) 포맷으로 덤프하는 툴 전체 데이터베이스 백업 (dump)mongodump --uri="mongodb://localhost:27017" --out=/backup/mongo_$(date +%F) #저장경로 - 오늘날짜 특정 데이터베이스만 백업mongodump --db=mydb --out=/backup/mongo_$(date +%F) mongorestore로 복원하기 m..

Database/MongoDB 2024.09.06

[MongoDB] 기본 명령어 CRUD 비교,논리 연산자

1. Document 입력 - insertOne, insertManyinsertOne: 한 개의 document(문서)를 생성insertMany: 여러 개의 document를 한 번에 생성// 하나의 문서를 추가 (insertOne)db.test_2.insertOne( { title: "MongoDB Guide", author: "Jane Doe", views: 100 })// 여러 개의 문서를 추가 (insertMany)db.test_2.insertMany([ { title: "Python Tutorial", author: "John Smith", views: 150 }, { title: "JavaScript Basics", author: "Sara Lee", views: 200 }, ..

Database/MongoDB 2024.07.25