[파이썬] mongoengine 쿼리셋(QuerySet) 기초

Mongoengine은 파이썬에서 MongoDB를 사용하기 위한 Object-Document Mapper(ODM)입니다. 이를 통해 MongoDB와 상호작용을 쉽게 할 수 있으며, 쿼리셋(QuerySet)은 그 중 중요한 개념 중 하나입니다. 이번 글에서는 mongoengine의 쿼리셋을 사용하는 기초적인 방법을 알아보겠습니다.

쿼리셋(QuerySet)이란?

쿼리셋(QuerySet)은 mongoengine에서 데이터베이스로의 쿼리를 수행하고 그 결과물을 가져오는 객체입니다. 이를 통해 MongoDB의 데이터를 쉽게 필터링하고 조작할 수 있습니다. 쿼리셋은 MongoDB의 쿼리와 유사한 구문을 사용하여 데이터를 조회하고 조작할 수 있는 다양한 메서드를 제공합니다.

쿼리셋(QuerySet) 생성하기

mongoengine의 쿼리셋은 Document 클래스에 정의된 필터링 조건들을 가져올 수 있습니다. 아래는 User라는 Document 클래스를 예로 들어 생성된 쿼리셋의 사용 방법입니다.

from mongoengine import Document, StringField

class User(Document):
    username = StringField()
    email = StringField()

users = User.objects

위의 예제에서 User.objectsUser Document의 모든 데이터를 포함한 쿼리셋을 반환합니다. 이제 이 쿼리셋을 사용하여 데이터를 조회하고 조작할 수 있습니다.

쿼리셋(QuerySet) 필터링하기

쿼리셋을 사용하여 데이터를 필터링하려면 filter() 메서드를 사용합니다. 아래 예제는 username이 “john”인 사용자를 필터링하는 방법을 보여줍니다.

john_users = users.filter(username="john")

쿼리셋은 또한 다양한 필터링 연산자를 지원합니다. 예를 들어, gt(크다), lt(작다), gte(크거나 같다), lte(작거나 같다)와 같은 연산자를 사용하여 숫자나 날짜 필드를 비교할 수 있습니다. 아래는 age 필드가 21보다 큰 사용자를 필터링하는 예제입니다.

users = users.filter(age__gt=21)

쿼리셋(QuerySet) 정렬하기

쿼리셋은 order_by() 메서드를 사용하여 결과를 정렬할 수 있습니다. 아래 예제는 username 필드를 사용하여 사용자를 오름차순으로 정렬하는 방법을 보여줍니다.

sorted_users = users.order_by("username")

또는 내림차순으로 정렬하려면 - 기호를 사용할 수 있습니다.

sorted_users = users.order_by("-username")

쿼리셋(QuerySet) 결과 가져오기

쿼리셋은 마지막으로 first() 또는 all() 메서드를 사용하여 결과를 가져올 수 있습니다. first() 메서드는 쿼리셋에서 첫 번째 객체를 반환하고, all() 메서드는 쿼리셋의 모든 객체를 리스트로 반환합니다.

first_user = users.first()
all_users = users.all()

결론

이번 글에서는 mongoengine의 쿼리셋(QuerySet)을 소개했습니다. 쿼리셋을 사용하면 MongoDB 데이터베이스에서 데이터를 필터링하고 조작하는 작업을 쉽게 수행할 수 있습니다. 이 외에도 쿼리셋은 다양한 메서드를 제공하여 데이터의 정렬, 제한, 업데이트 등 다양한 작업을 할 수 있습니다. mongoengine의 쿼리셋을 잘 활용하면 MongoDB와 상호작용하는 애플리케이션을 보다 효율적으로 개발할 수 있습니다.