[파이썬] mongoengine 오브젝트 아이디(`ObjectId`) 사용하기

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를 활용한 웹 애플리케이션 또는 데이터 처리 프로젝트를 더욱 효율적으로 개발할 수 있습니다.