[파이썬] `mongoengine`의 내부 동작 방식

mongoengine은 파이썬에서 MongoDB와 상호 작용하기 위한 ORM(Object Relational Mapping) 라이브러리입니다. mongoengine을 사용하면 MongoDB에 저장된 데이터를 파이썬 객체로 바꾸고, 관리하며, 쿼리를 수행할 수 있습니다. 이 블로그 포스트에서는 mongoengine의 내부 동작 방식에 대해 알아보겠습니다.

문서(Document) 모델

mongoengine은 MongoDB의 컬렉션(Collection)과 대응하는 파이썬 클래스를 사용하여 데이터를 정의합니다. 이러한 클래스를 문서(Document) 모델이라고 합니다. 문서 모델은 mongoengine.Document 클래스를 상속받아 정의되며, 클래스의 필드는 MongoDB의 문서에 해당하는 항목을 나타냅니다.

from mongoengine import Document, StringField, IntField

class User(Document):
    name = StringField(required=True)
    age = IntField()

위의 코드에서 User 클래스는 mongoengine.Document 클래스를 상속받아 정의되었습니다. User 클래스는 nameage라는 두 개의 필드를 가지며, name은 문자열(StringField) 타입이고, age는 정수(IntField) 타입입니다.

연결(Connection)

mongoengine은 MongoDB에 연결하기 위해 connect 함수를 제공합니다. 이 함수를 호출하여 MongoDB 서버에 연결할 수 있습니다.

from mongoengine import connect

connect('my-database', host='localhost', port=27017)

위의 코드에서 'my-database'는 연결할 MongoDB의 데이터베이스 이름을 나타내며, hostport는 MongoDB 서버에 대한 호스트와 포트 번호를 지정합니다.

쿼리(Query)

mongoengine을 사용하여 MongoDB에 쿼리를 수행할 때는 QuerySet을 사용합니다. QuerySetDocument 클래스의 인스턴스를 조작하는데 사용되며, 다양한 쿼리 연산자를 지원합니다.

# 모든 사용자(문서) 조회
users = User.objects()

# 조건에 맞는 사용자 조회
young_users = User.objects(age__lt=30)

# 사용자 추가
user = User(name='John', age=25)
user.save()

# 사용자 수정
user.name = 'Jane'
user.save()

# 사용자 삭제
user.delete()

위의 코드에서 User 클래스의 objects 메서드는 QuerySet 객체를 반환합니다. QuerySet 객체는 filter 메서드를 통해 조건을 지정하여 문서를 조회할 수 있습니다.

저장(Insert) 및 갱신(Update)

mongoengine을 사용하여 데이터를 저장 및 갱신할 때는 문서 객체를 생성하고 save 메서드를 호출합니다. 이렇게 하면 생성한 문서 객체가 MongoDB에 저장되거나 갱신됩니다.

# 사용자 추가
user = User(name='John', age=25)
user.save()

# 사용자 수정
user.name = 'Jane'
user.save()

위의 코드에서 User 클래스의 인스턴스를 생성하고, save 메서드를 호출하여 사용자를 추가 또는 수정합니다.

삭제(Delete)

mongoengine을 사용하여 데이터를 삭제할 때는 문서 객체의 delete 메서드를 호출합니다. 이렇게 하면 해당 문서가 MongoDB에서 삭제됩니다.

user.delete()

위의 코드에서 delete 메서드를 호출하여 사용자를 삭제합니다.

결론

mongoengine은 파이썬에서 MongoDB와 상호 작용하기 위한 강력한 ORM 라이브러리입니다. 이 블로그 포스트에서는 mongoengine의 문서 모델, 연결, 쿼리, 저장/갱신/삭제 등의 기본적인 내부 동작 방식에 대해 살펴보았습니다. mongoengine을 사용하면 MongoDB와 파이썬 간의 데이터 처리를 간편하게 수행할 수 있습니다.