Overview
En esta guía, puede aprender a usar Django MongoDB Backend para ejecutar operaciones de creación, lectura, actualización y eliminación (CRUD) en su colección MongoDB.
También puedes usar el sitio de administración de Django para editar tus modelos y sus colecciones correspondientes en una interfaz web. Para más información, consulta Entrada del sitio de administración de Django en la documentación de Django.
API de consulta
Puedes utilizar métodos proporcionados por Django QuerySet API para ejecutar operaciones CRUD. Para ejecutar estas operaciones, puede llamar a los métodos QuerySet en el administrador de su modelo. La clase Manager gestiona las operaciones de la base de datos y le permite interactuar con sus datos de MongoDB haciendo referencia a los modelos de Django. De forma predeterminada, Django añade un Manager llamado objects a cada clase de modelo.
Tip
Para obtener más información sobre la API de Django,QuerySet consulte en la documentación QuerySet de Django.
Esta guía muestra cómo utilizar los siguientes métodos QuerySet:
create(): inserta documentos en la colección
filter() y get(): recupera uno o varios documentos de colección
update(): modifica los documentos de colección
delete(): Elimina documentos de la colección
Datos de muestra
Los ejemplos de esta guía utilizan el Movie modelo, que representa la sample_mflix.movies colección de los conjuntos de datos de muestra de Atlas. La Movie clase del modelo tiene la siguiente definición:
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
El modelo Movie incluye una clase interna Meta, que especifica los metadatos del modelo, y un método __str__(), que define la representación de cadena del modelo. Para obtener más información sobre estas características del modelo, consulte Defina un modelo en la guía Crear modelos.
Ejecutar ejemplos de código
Puedes usar el shell interactivo de Python para ejecutar los ejemplos de código. Para acceder al shell, ejecuta el siguiente comando desde el directorio raíz de tu proyecto:
python manage.py shell
Después de ingresar al shell de Python, asegúrese de importar los siguientes modelos y módulos:
from <your application name>.models import Movie from django.utils import timezone from datetime import datetime
Para aprender a crear una aplicación Django que use el Movie modelo y el shell interactivo de Python para interactuar con documentos MongoDB, visita el tutorial Primeros pasos.
Insertar documentos
Para insertar un documento en una colección, llame al método create() en el administrador de su modelo. Pase los nombres y valores de los campos del nuevo documento como argumentos al método create().
Ejemplo
El siguiente ejemplo llama al método create() para insertar un documento en la colección sample_mflix.movies. El nuevo documento tiene un valor "Poor Things" en title y un valor 141 en runtime:
Movie.objects.create(title="Poor Things", runtime=141)
El método create() permite crear un nuevo objeto Movie y guardarlo en MongoDB con una sola llamada. También puede crear un objeto Movie y llamar a save(), como se muestra en el siguiente código:
movie = Movie(title="Poor Things", runtime=141) movie.save()
Tip
Para obtener más información sobre el create() método, consulte en la documentación de create Django.
Lea los documentos
Para recuperar documentos de su colección, llame al método filter() en el administrador de su modelo. Pase un filtro de consulta, o criterios que especifiquen qué documentos recuperar, como argumento al método filter().
Alternativamente, puedes llamar al método get() para recuperar un solo documento que coincida con tu consulta.
Ejemplo de devolución de varios documentos
El siguiente ejemplo llama al método filter() para recuperar documentos de la colección sample_mflix.movies. La consulta devuelve Movie objetos que representan películas estrenadas el 1 de enero del 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>]>
Tip
Para obtener más información sobre el filter() método, consulte en la documentación de filter Django.
Ejemplo de devolución de un documento
Para recuperar solo un documento que coincida con sus criterios de consulta, llame al método get() y pase un filtro de consulta como argumento. El siguiente ejemplo recupera un documento cuyo valor title es "Boyhood":
Movie.objects.get(title="Boyhood")
<Movie: Boyhood>
Importante
Si tu query no coincide con ningún documento o con varios documentos, el método get() genera un error. Para recuperar un documento de una query que podría coincidir con múltiples, encadena el método first() a filter(), como se muestra en el siguiente código:
Movie.objects.filter(title="Boyhood").first()
Tip
Para obtener más información sobre el get() método, consulte en la documentación de get Django.
Modificar documentos
Para modificar documentos de una colección, llame a los métodos filter() y update() del administrador de su modelo. Pase un filtro de consulta, o criterios que especifiquen qué documentos actualizar, como argumento al método filter(). Luego, pase los campos y valores que desea actualizar como argumentos al método update().
Ejemplo
El siguiente ejemplo llama al método update() para modificar documentos de la colección sample_mflix.movies. El código busca un documento cuyo valor title es "High Fidelity" y añade un 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
Tip
Para obtener más información sobre el update() método, consulte en la documentación de update Django.
Delete Documents
Para eliminar documentos de una colección, llame a los métodos filter() y delete() en el administrador de su modelo. Pase un filtro de consulta o un criterio que especifique qué documentos eliminar como argumento al método filter().
Ejemplo
El siguiente ejemplo llama al método delete() para eliminar documentos de la colección sample_mflix.movies. El código busca y elimina los documentos cuyo valor runtime es 5:
Movie.objects.filter(runtime=5).delete()
// Outputs the number of deleted documents and objects (16, {'sample_mflix.Movie': 16})
Tip
Para obtener más información sobre el delete() método, consulte en la documentación de delete Django.
Información Adicional
Para obtener más información sobre cómo realizar operaciones de lectura, consulte la guía Especificar una consulta.
Para ver más ejemplos de creación, lectura, actualización y eliminación, consulte los siguientes pasos del tutorial Comenzar: