Docs Menu
Docs Home
/ /
/ / /

Realizar operaciones CRUD

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.

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

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.

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.

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().

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.

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.

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.

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.

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().

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.

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().

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.

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:

Volver

Interacción con los datos

En esta página