Visão geral
Neste guia, você pode aprender como usar o Django MongoDB Backend para executar operações de criação, leitura, atualização e exclusão (CRUD) em sua coleção do MongoDB .
Você também pode usar o site de administração do Django para editar seus modelos e suas coleções correspondentes em uma interface da Web. Para obter mais informações, consulte a entrada do Django Admin Site na documentação do Django.
API de Consulta
Você pode usar métodos fornecidos pela API do Django QuerySet
para executar operações CRUD. Para executar essas operações, você pode chamar os métodos QuerySet
no gerenciador do seu modelo. A classe Manager
lida com operações de banco de dados e permite que você interaja com os dados do MongoDB fazendo referência a modelos do Django. Por padrão, o Django adiciona um Manager
denominado objects
a cada classe de modelo.
Dica
Para saber mais sobre a API do Django,QuerySet
consulte na documentação do QuerySet
Django.
Este guia mostra como usar os seguintes métodos do QuerySet
:
create(): Insere documentos na collection
filter() e get(): recupera um ou vários documentos da collection
update(): Modifica documentos da collection
delete(): exclui documentos da coleção
Dados de amostra
Os exemplos neste guia usam o Movie
modelo, que representa a sample_mflix.movies
collection dos conjuntos de dados de amostra do Atlas . A classe de modelo Movie
tem a seguinte definição:
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
O modelo Movie
inclui uma classe Meta
interna, que especifica os metadados do modelo, e um método __str__()
, que define a representação de string do modelo. Para saber mais sobre essas funcionalidades de modelo, consulte Definir um modelo no guia Criar modelos.
Exemplos de código de execução
Você pode usar o shell interativo do Python para executar os exemplos de código. Para entrar na shell, execute o seguinte comando no diretório raiz do seu projeto:
python manage.py shell
Depois de inserir o shell do Python, certifique-se de importar os seguintes modelos e módulos:
from <your application name>.models import Movie from django.utils import timezone from datetime import datetime
Para saber como criar um aplicação Django que use o modelo Movie
e o shell interativo Python para interagir com documentos do MongoDB, acesse o tutorial de Introdução.
Insira documentos
Para inserir um documento em uma coleção, chame o método create()
no gerenciador do seu modelo. Passe os nomes de campo e os valores de campo do novo documento como argumentos para o método create()
.
Exemplo
O exemplo a seguir chama o método create()
para inserir um documento na coleção sample_mflix.movies
. O novo documento tem um valor title
de "Poor Things"
e um valor runtime
de 141
:
Movie.objects.create(title="Poor Things", runtime=141)
O método create()
permite criar um novo objeto Movie
e salvar o objeto no MongoDB em uma chamada de método. Como alternativa, você pode criar um objeto Movie
e chamar save()
, conforme mostrado no código a seguir:
movie = Movie(title="Poor Things", runtime=141) movie.save()
Dica
Para saber mais sobre o create()
método, consulte na documentação do create
Django.
Ler documentos
Para recuperar documentos da sua coleção, chame o método filter()
no gerenciador do seu modelo. Passe um filtro de query ou critérios que especifiquem quais documentos recuperar, como argumento para o método filter()
.
Alternativamente, você pode chamar o método get()
para recuperar um único documento que corresponda à sua query.
Exemplo de devolução de vários documentos
O exemplo seguinte chama o método filter()
para recuperar documentos da coleção sample_mflix.movies
. A query retorna Movie
objetos que representam filmes lançados em 1 de janeiro de 2000:
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>]>
Dica
Para saber mais sobre o filter()
método, consulte na documentação do filter
Django.
Exemplo de devolução de um documento
Para recuperar somente um documento que corresponda aos seus critérios de query, chame o método get()
e passe um filtro de query como argumento. O exemplo a seguir recupera um documento no qual o valor title
é "Boyhood"
:
Movie.objects.get(title="Boyhood")
<Movie: Boyhood>
Importante
Se a sua query não corresponder a nenhum documento ou a vários documentos, o método get()
gerará um erro. Para recuperar um documento de uma query que possa corresponder a vários, encadeie o método first()
a filter()
, conforme mostrado no código a seguir:
Movie.objects.filter(title="Boyhood").first()
Dica
Para saber mais sobre o get()
método, consulte na documentação do get
Django.
Modificar documentos
Para modificar documentos em uma coleção, chame os métodos filter()
e update()
no gerenciador do seu modelo. Passe um filtro de query ou critérios que especifiquem quais documentos atualizar, como argumento para o método filter()
. Em seguida, passe os campos e valores que deseja atualizar como argumentos para o método update()
.
Exemplo
O exemplo seguinte chama o método update()
para modificar documentos na coleção sample_mflix.movies
. O código corresponde a um documento que tem um valor title
de "High Fidelity"
e adiciona um campo 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
Dica
Para saber mais sobre o update()
método, consulte na documentação do update
Django.
Exclua documentos
Para excluir documentos em uma coleção, chame os métodos filter()
e delete()
no gerenciador do seu modelo, Passe um filtro de query ou critérios que especificam quais documentos excluir, como argumento para o método filter()
.
Exemplo
O exemplo seguinte chama o método delete()
para excluir documentos na coleção sample_mflix.movies
. O código corresponde e exclui documentos que têm um valor runtime
de 5
:
Movie.objects.filter(runtime=5).delete()
// Outputs the number of deleted documents and objects (16, {'sample_mflix.Movie': 16})
Dica
Para saber mais sobre o delete()
método, consulte na documentação do delete
Django.
Informações adicionais
Para saber mais sobre como realizar operações de leitura, consulte o guia Especificar uma query.
Para exibir mais exemplos de criação, leitura, atualização e exclusão, consulte as seguintes etapas do tutorial de Introdução: