개요
이 가이드 에서는 장고 MongoDB 백엔드를 사용하여 MongoDB 컬렉션 에서 생성, 읽기, 업데이트 및 삭제 (CRUD ) 작업을 실행 방법을 학습 수 있습니다.
장고 관리 사이트 사용하여 웹 인터페이스에서 모델과 해당 컬렉션을 편집할 수도 있습니다. 자세한 내용은 Django 문서에서 Django관리자 사이트 항목을 참조하세요.
Query API
장고 QuerySet
API 에서 제공하는 메서드를 사용하여 CRUD 작업을 실행 수 있습니다. 이러한 작업을 실행 하려면 모델 관리자에서 QuerySet
메서드를 호출하면 됩니다. Manager
클래스는 데이터베이스 작업을 처리하고 Django 모델을 참조하여 MongoDB 데이터와 상호 작용 있도록 합니다. 기본값 으로 Django는 모든 모델 클래스에 objects
라는 이름의 Manager
를 추가합니다.
팁
장고의 QuerySet
API 에 QuerySet
대해 자세히 학습 장고 문서에서 를 참조하세요.
이 가이드 다음 QuerySet
메서드를 사용하는 방법을 보여줍니다.
create(): 컬렉션 에 문서를 삽입합니다.
필터하다() 및 get(): 하나 이상의 컬렉션 문서를 조회합니다.
업데이트(): 컬렉션 문서를 수정합니다.
삭제(): 컬렉션 문서를 삭제합니다.
샘플 데이터
이 Movie
가이드 의 sample_mflix.movies
예제에서는 Atlas 샘플 데이터 세트의 컬렉션 나타내는 모델을 사용합니다. Movie
모델 클래스에는 다음과 같은 정의가 있습니다.
from django.db import models from django_mongodb_backend.fields import ArrayField class Movie(models.Model): title = models.CharField(max_length=200) plot = models.TextField(blank=True) runtime = models.IntegerField(default=0) released = models.DateTimeField("release date", null=True, blank=True) genres = ArrayField(models.CharField(max_length=100), null=True, blank=True) class Meta: db_table = "movies" managed = False def __str__(self): return self.title
Movie
모델에는 모델 메타데이터 지정하는 내부 Meta
클래스와 모델의 문자열 표현을 정의하는 __str__()
메서드가 포함되어 있습니다. 이러한 모델 기능에 대해 학습 모델 생성 가이드 의모델 정의를 참조하세요.
코드 예제 실행
Python 대화 셸 사용하여 코드 예제를 실행 수 있습니다. 셸 에 들어가려면 프로젝트의 루트 디렉토리 에서 다음 명령을 실행 .
python manage.py shell
Python 셸 입력한 후 다음 모델 및 모듈을 가져와야 합니다.
from <your application name>.models import Movie from django.utils import timezone from datetime import datetime
모델과 Python 인터랙티브 셸 사용하여 MongoDB 문서와 상호 Movie
작용 장고 애플리케이션 만드는 방법을 학습 시작하기 튜토리얼을 참조하세요.
문서 삽입
컬렉션 에 문서 삽입하려면 모델 관리자에서 create()
메서드를 호출합니다. 새 문서의 필드 이름과 필드 값을 create()
메서드에 인수로 전달합니다.
예시
다음 예시 create()
메서드를 호출하여 sample_mflix.movies
컬렉션 에 문서 삽입합니다. 새 문서 의 title
값은 "Poor Things"
이고 runtime
값은 141
입니다.
Movie.objects.create(title="Poor Things", runtime=141)
create()
메서드를 사용하면 한 번의 메서드 호출로 새 Movie
객체 만들고 객체 MongoDB 에 저장할 수 있습니다. 또는 다음 코드에 표시된 대로 Movie
객체 생성하고 save()
를 호출할 수 있습니다.
movie = Movie(title="Poor Things", runtime=141) movie.save()
팁
create()
메서드에 대해 자세히 학습 장고 문서에서 를 참조하세요.create
문서 읽기
컬렉션 에서 문서를 조회 하려면 모델 관리자에서 filter()
메서드를 호출합니다. 조회 할 문서를 지정하는 쿼리 필터하다 또는 기준을 filter()
메서드의 인수로 전달합니다.
또는 get()
메서드를 호출하여 쿼리 와 일치하는 단일 문서 조회 할 수 있습니다.
여러 문서 반환 예시
다음 예시 filter()
메서드를 호출하여 sample_mflix.movies
컬렉션 에서 문서를 조회 . 쿼리 1, 2000에 1월에 개봉된 영화를 나타내는 Movie
객체를 반환합니다.
Movie.objects.filter(released=timezone.make_aware(datetime(2000, 1, 1)))
<QuerySet [<Movie: The Bumblebee Flies Anyway>, <Movie: Angels of the Universe>, <Movie: First Person Plural>, <Movie: Just, Melvin: Just Evil>, <Movie: Sound and Fury>, <Movie: Peppermint Candy>]>
팁
filter()
메서드에 대해 자세히 학습 장고 문서에서 를 참조하세요.filter
1개의 문서 반환 예제
쿼리 기준과 일치하는 문서 하나만 조회 하려면 get()
메서드를 호출하고 쿼리 필터하다 인수로 전달합니다. 다음 예시 title
값이 "Boyhood"
인 문서 조회합니다.
Movie.objects.get(title="Boyhood")
<Movie: Boyhood>
중요
쿼리 일치하는 문서가 없거나 여러 문서와 일치하는 경우 get()
메서드는 오류를 생성합니다. 여러 개와 일치할 수 있는 쿼리 에서 하나의 문서 조회 하려면 다음 코드와 같이 first()
메서드를 filter()
에 연결합니다.
Movie.objects.filter(title="Boyhood").first()
팁
get()
메서드에 대해 자세히 학습 장고 문서에서 를 참조하세요.get
문서 수정
컬렉션 의 문서를 수정하려면 모델 관리자에서 filter()
및 update()
메서드를 호출합니다. 업데이트 할 문서를 지정하는 쿼리 필터하다 또는 기준을 filter()
메서드의 인수로 전달합니다. 그런 다음 업데이트 하려는 필드와 값을 update()
메서드에 인수로 전달합니다.
예시
다음 예시 update()
메서드를 호출하여 sample_mflix.movies
컬렉션 의 문서를 수정합니다. 이 코드는 title
값이 "High Fidelity"
이고 plot
필드 추가하는 문서 와 일치합니다.
Movie.objects.filter( title="High Fidelity").update( plot="Rob, a record store owner, recounts his top five breakups,including the one in progress.")
// Outputs the number of modified documents 1
팁
update()
메서드에 대해 자세히 학습 장고 문서에서 를 참조하세요.update
문서 삭제
컬렉션 에서 문서를 삭제 하려면 모델 관리자에서 filter()
및 delete()
메서드를 호출하거나, 쿼리 필터하다 또는 삭제 문서를 지정하는 기준을 filter()
메서드에 대한 인수로 전달합니다.
예시
다음 예시 delete()
메서드를 호출하여 sample_mflix.movies
컬렉션 의 문서를 삭제 . 이 코드는 runtime
값이 5
인 문서를 일치시키고 삭제합니다.
Movie.objects.filter(runtime=5).delete()
// Outputs the number of deleted documents and objects (16, {'sample_mflix.Movie': 16})
팁
delete()
메서드에 대해 자세히 학습 장고 문서에서 를 참조하세요.delete
추가 정보
읽기 작업 수행에 대해 자세히 학습 쿼리 지정 가이드 를 참조하세요.
만들기, 읽기, 업데이트 및 삭제 예제를 더 보려면 시작하기 튜토리얼의 다음 단계를 참조하세요.