[파이썬] mongoengine 필터링 작업

MongoEngine은 Python에서 MongoDB와 상호작용하기 위한 객체 문서 매핑 라이브러리입니다. 이 라이브러리를 사용하면 Python 객체를 MongoDB 문서로 매핑하고, 데이터를 쉽게 저장, 수정, 검색할 수 있습니다. 이번 블로그에서는 MongoEngine을 사용하여 MongoDB에서 필터링 작업을 수행하는 방법을 알아보겠습니다.

필터링 기본 개념

MongoEngine을 사용하여 MongoDB에서 필터링 작업을 수행하려면 QuerySet 객체를 사용해야 합니다. QuerySet은 MongoDB 쿼리의 일부를 나타내며, 조건에 부합하는 데이터를 검색하기 위해 사용됩니다. QuerySet은 여러 메서드를 통해 필터링, 정렬, 제한 등의 작업을 수행할 수 있습니다.

필터링 작업 예제

다음 예제에서는 Person 모델을 사용하여 필터링 작업을 수행하는 방법을 보여줍니다. Person 모델은 MongoDB 컬렉션의 문서를 나타내며, name, age, city 필드로 구성됩니다.

from mongoengine import Document, StringField, IntField

class Person(Document):
    name = StringField(max_length=50)
    age = IntField()
    city = StringField(max_length=50)

모든 데이터 검색

QuerySet 객체의 all() 메서드를 사용하여 모든 데이터를 검색할 수 있습니다.

people = Person.objects.all()
for person in people:
    print(person.name, person.age, person.city)

특정 조건에 부합하는 데이터 검색

QuerySet 객체의 filter() 메서드를 사용하여 특정 조건에 부합하는 데이터를 검색할 수 있습니다. 다음 예제는 age 필드가 30 이상인 데이터를 검색합니다.

people = Person.objects.filter(age__gte=30)
for person in people:
    print(person.name, person.age, person.city)

정렬된 데이터 검색

QuerySet 객체의 order_by() 메서드를 사용하여 데이터를 정렬할 수 있습니다. 다음 예제는 age 필드를 기준으로 오름차순으로 데이터를 정렬합니다.

people = Person.objects.order_by('age')
for person in people:
    print(person.name, person.age, person.city)

제한된 개수의 데이터 검색

QuerySet 객체의 limit() 메서드를 사용하여 제한된 개수의 데이터만 검색할 수 있습니다. 다음 예제는 age 필드가 30 초과인 데이터 중 처음 5개의 데이터를 검색합니다.

people = Person.objects.filter(age__gt=30).limit(5)
for person in people:
    print(person.name, person.age, person.city)

결론

MongoEngine을 사용하여 MongoDB에서 필터링 작업을 수행하는 것은 간단하고 효율적입니다. QuerySet 객체의 다양한 메서드를 사용하여 필터링, 정렬, 제한 등의 작업을 수행할 수 있습니다. 이번 포스트에서는 필터링 작업의 기본적인 개념과 예제를 알아보았습니다. 추가적으로 MongoDB 쿼리 문법과 다양한 옵션에 대해 더 알아보시길 권장합니다.