* MongoDB의 _id나 특정 키가 ObjectId 타입일 경우, 이를 문자열로 변환하지 않고 그대로 전송하면 클라이언트에서 처리할 수 없음
* 반대로 클라이언트에서 문자열로 보낸 값을 MongoDB 쿼리에서 ObjectId로 변환하지 않으면 쿼리 결과가 제대로 반환되지 않는 문제가 발생
데이터를 API로 주고받을 때, MongoDB 필드 중 ObjectId인 경우에는 서버/클라이언트에서 변환 처리를 명시적으로 해줘야함
이를 해결하기 위해, JSON 형식의 데이터를 처리할 때 _id 필드를 ObjectId 로 변환해주는 로직이 필요
def convert(value):
if isinstance(value, dict):
for key, item in value.items():
if key == '_id' and isinstance(item, str):
value['_id'] = ObjectId(value['_id'])
응답 데이터나 API 결과를 클라이언트로 반환할 때는 반대로 ObjectId를 문자열로 변환해야함
def convert(data):
if isinstance(data, dict):
for key, value in data.items():
if key == '_id' and isinstance(value, ObjectId):
data[key] = str(value)
REST API나 gRPC 등 클라이언트와 데이터 교환 시에는 _id 변환이 필수라고 보면 된다.
특히 FastAPI, Flask 등에서는 자동 변환되지 않기 때문에 직접 처리하는 게 안정적이다.
'Database > MongoDB' 카테고리의 다른 글
[Python] 200대 상태 코드 처리 오류 (1) | 2024.09.20 |
---|---|
[MongoDB] MongoDB ReplicaSet 기본 구성 (1) | 2024.09.11 |
[MongoDB] MongoDB 백업 및 복원 (1) | 2024.09.06 |
[MongoDB] 기본 명령어 CRUD 비교,논리 연산자 (4) | 2024.07.25 |