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 Site do administrador do Django 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
To learn more about Django's QuerySet API, see QuerySet in the Django documentation.
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
The examples in this guide use the Movie model, which represents the sample_mflix.movies collection from the Atlas sample datasets. The Movie model class has the following definition:
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 esses recursos 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 usa o Movie modelo e o shell interativo do Python para interagir com documentos do MongoDB , acesse o tutorial Introdução ao Django MongoDB Backend.
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
To learn more about the create() method, see create in the Django documentation.
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)))
Dica
To learn more about the filter() method, see filter in the Django documentation.
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")
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
To learn more about the get() method, see get in the Django documentation.
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.")
Dica
To learn more about the update() method, see update in the Django documentation.
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()
Dica
To learn more about the delete() method, see delete in the Django documentation.
Informações adicionais
Para saber mais sobre como realizar operações de leitura, consulte o guia Especificar uma query.
Para visualizar mais exemplos de criação, leitura, atualização e exclusão, consulte as seguintes etapas do tutorial Introdução ao backend do MongoDB Django: