[파이썬] mongoengine 여러 필드에 대한 조건 설정하기

MongoEngine은 Python에서 MongoDB와 상호 작용하기 위한 객체 문서 매핑 라이브러리입니다. 이를 통해 강력한 쿼리 기능을 활용하여 MongoDB에서 데이터를 쉽게 조작할 수 있습니다.

이번 포스트에서는 MongoEngine을 사용하여 여러 필드에 대한 조건을 설정하는 방법을 알아보겠습니다. 다음은 MongoEngine의 고급 쿼리 기능을 사용하는 예시입니다.

필요한 패키지 설치

먼저 MongoEngine 패키지를 설치해야 합니다. 다음 명령을 사용하여 설치하세요.

pip install mongoengine

데이터베이스 연결

MongoEngine을 사용하여 데이터베이스에 연결하는 방법은 다음과 같습니다.

from mongoengine import connect

# 데이터베이스 연결
connect('my_database', host='localhost', port=27017)

필드에 대한 조건 설정

아래 예시는 User라는 컬렉션을 정의하고, 여러 필드에 대한 조건을 설정하는 방법을 보여줍니다.

from mongoengine import Document, StringField, IntField

class User(Document):
    name = StringField()
    age = IntField()
    gender = StringField()

# 이하 생략..

등호(==)를 사용한 조건 설정

# 나이가 25인 사용자 찾기
users = User.objects(age=25)

# 이름이 'John'인 사용자 찾기
users = User.objects(name='John')

# 이름이 'John'이고 성별이 '남성'인 사용자 찾기
users = User.objects(name='John', gender='남성')

크기 비교 연산자(<, <=, >, >=)를 사용한 조건 설정

# 나이가 30 이하인 사용자 찾기
users = User.objects(age__lte=30)

# 나이가 18 초과인 사용자 찾기
users = User.objects(age__gt=18)

# 나이가 25보다 큰 사용자 찾기
users = User.objects(age__gt=25)

논리 연산자($and, $or)를 사용한 조건 설정

from mongoengine import Q

# 이름이 'John'이거나 나이가 30 이하인 사용자 찾기
users = User.objects(Q(name='John') | Q(age__lte=30))

# 이름이 'John'이고 성별이 '남성'인 사용자 찾기
users = User.objects(Q(name='John') & Q(gender='남성'))

결과 처리

MongoEngine에서 쿼리 결과를 처리하는 방법은 매우 간단합니다. 쿼리 결과는 QuerySet 객체로 반환되며, 이를 이용하여 데이터를 조작할 수 있습니다.

# 쿼리 결과를 리스트로 변환
user_list = list(users)

# 결과를 반복문을 통해 출력
for user in users:
    print(user.name, user.age, user.gender)

마치며

이번 포스트에서는 MongoEngine을 사용하여 여러 필드에 대한 조건 설정하는 방법을 알아보았습니다. 이러한 고급 쿼리 기능을 사용하면 데이터베이스에서 원하는 데이터를 손쉽게 추출할 수 있습니다. 추가적인 자세한 내용은 MongoEngine 문서를 참고하시기 바랍니다.