MongoDB는 NoSQL 데이터베이스로 많은 양의 비정형 데이터를 저장하고 처리하는 데 사용됩니다. Python에서 MongoDB를 사용하려면 mongoengine이라는 ORM(Object-Relational Mapping)을 활용할 수 있습니다. 이를 통해 데이터를 Python 객체로 쉽게 조작할 수 있습니다.
이번 포스트에서는 mongoengine에서 제공하는 ObjectId
를 사용하여 MongoDB의 문서를 식별하는 방법에 대해 알아보겠습니다.
ObjectId란?
ObjectId
는 MongoDB에서 각 문서를 고유하게 식별하는 데 사용되는 12바이트 식별자입니다. 이 값은 MongoDB의 기본 키 역할을 하며, 데이터베이스에서 새로운 문서를 추가할 때 자동으로 생성됩니다. ObjectId
는 16진수로 표현되며, 다음과 같은 형태를 가지고 있습니다: 507f1f77bcf86cd799439011
.
mongoengine에서 ObjectId 사용하기
mongoengine 라이브러리는 Python과 MongoDB를 연동하기 위한 ORM으로, 여러 가지 유용한 기능을 제공합니다. ObjectId
를 사용할 때에도 mongoengine을 통해 간편하게 처리할 수 있습니다. 다음은 ObjectId
를 사용하여 새로운 문서를 생성하는 예시 코드입니다.
from mongoengine import Document, ObjectIdField, StringField
class User(Document):
id = ObjectIdField()
name = StringField()
user = User(name="John Doe")
user.save()
print(user.id)
위 코드에서는 User
라는 mongoengine 문서 클래스를 정의하고, ObjectIdField
를 사용하여 id
필드를 정의합니다. 이후, User
객체를 생성하고 save()
메서드를 통해 데이터베이스에 저장합니다. 마지막으로 user.id
를 통해 새로 생성된 ObjectId
값을 확인할 수 있습니다.
ObjectId 검색하기
ObjectId
는 문서를 식별하는 데 사용되므로, 특정 ObjectId
를 기반으로 문서를 조회하거나 수정할 수도 있습니다. 다음은 ObjectId
를 사용하여 User
문서를 조회하는 예시 코드입니다.
from mongoengine import Document, ObjectIdField, StringField
class User(Document):
id = ObjectIdField()
name = StringField()
# ObjectId로 문서 조회
user = User.objects.get(id="60d5f435f63a9000166b4aa1")
print(user.name)
# ObjectId로 문서 수정
user.name = "Jane Smith"
user.save()
위 코드에서는 User
문서에서 ObjectId
값을 "60d5f435f63a9000166b4aa1"
로 가진 문서를 조회하고, 해당 문서의 name
필드 값을 출력합니다. 이후에는 user
객체의 name
을 수정하고 save()
메서드를 호출하여 변경 사항을 저장할 수 있습니다.
결론
mongoengine을 사용하면 MongoDB와 Python을 효과적으로 연동할 수 있습니다. ObjectId
를 사용하여 MongoDB의 문서를 고유하게 식별하고 조회 및 수정하는 기능을 손쉽게 구현할 수 있습니다. 이를 통해 MongoDB를 활용한 웹 애플리케이션 또는 데이터 처리 프로젝트를 더욱 효율적으로 개발할 수 있습니다.