Usar un ORM en MongoDB

Bilal Shahid 20 junio 2023
  1. Mapeo relacional de objetos (ORM)
  2. ORM en MongoDB
  3. Ejemplos de ORM para MongoDB
  4. Conclusión
Usar un ORM en MongoDB

MongoDB presenta una solución NoSQL para el almacenamiento y la gestión de datos, que consta de documentos representados en estilo JSON. Al igual que otros sistemas de bases de datos, MongoDB también puede funcionar con un ORM.

En este artículo, explicaremos el concepto de ORM en MongoDB y en general.

Mapeo relacional de objetos (ORM)

El mapeo relacional de objetos es una técnica que facilita el trabajo con datos en sistemas de bases de datos relacionales. Sirve como un puente de conexión entre su modelo de negocio y sus bases de datos de almacenamiento.

Un ORM funciona asignando los datos almacenados como relaciones en la base de datos a objetos en el lenguaje de su aplicación. Esto proporciona la ventaja de la facilidad de programación para el que escribe el código, ya que ahora se puede acceder a los datos utilizando el mismo lenguaje de programación de forma natural y fluida.

Vamos a explicar con más detalle cómo es esto posible.

Cuando se trabaja con un lenguaje orientado a objetos, el programador tiene que almacenar datos en la capa de lógica empresarial como objetos. Estos datos se almacenan simultáneamente en una base de datos relacional en forma de tablas o relaciones.

Traducir estos datos relacionales a objetos durante la codificación podría resultar en una aplicación fea. También es más propenso a errores ya que el programador tiene que trabajar con dos lenguajes separados en una aplicación y escribir consultas sin procesar.

Por lo tanto, ORM proporciona la solución a este problema al simplificar este proceso.

Nota: Eliminar un ORM de una aplicación después de que se haya enviado será muy difícil (¡y costoso!). Por lo tanto, debe decidirse de antemano si un ORM simplificará el proceso, introducirá problemas de rendimiento y procederá en consecuencia.

ORM en MongoDB

La pregunta ahora surge ya que MongoDB es una solución NoSQL y no usa relaciones. ¿Aún se le aplica un ORM? La respuesta es sí, los ORM también se pueden usar en MongoDB, pero aquí se los conoce más comúnmente como ODM.

ODM son las siglas de Object Document Mapping, reemplazando el Relacional con Documento ya que MongoDB almacena datos en documentos.

Para bases de datos NoSQL como MongoDB, usar un ODM no es una gran ventaja ya que ya son más simples. Pero trae el beneficio adicional de mejorar la productividad del desarrollador, que es esencial para el rendimiento general de la aplicación.

Sin embargo, los ODM todavía se usan ampliamente con MongoDB. Esto se debe a que los ODM pueden ayudar a utilizar las relaciones lógicas entre los datos, que de otro modo no se pueden representar fácilmente, ya que es imposible identificar tales relaciones en NoSQL.

Sin un ODM, el programador debe hacer cumplir manualmente esas relaciones de código. Dado que MongoDB tiene una arquitectura orientada a documentos, es muy adecuado para integrarse con un ODM, ya que los documentos también pueden denominarse objetos.

Por lo tanto, se usa un marco ODM junto con MongoDB para proporcionar una abstracción sobre la capa del modelo de datos.

Nota: si es nuevo en el uso de MongoDB, se recomienda omitir el uso de un ODM y trabajar con niveles más bajos de abstracción. Esto lo ayudará a familiarizarse más con el funcionamiento del software de la base de datos y lo equipará con su uso en profundidad, en lugar de esconderse detrás del alto nivel de abstracción proporcionado por un ODM.

Ejemplos de ORM para MongoDB

Existen numerosas bibliotecas ORM disponibles para MongoDB escritas para varios idiomas.

Algunos de ellos también son de código abierto. Veremos algunos ejemplos en este artículo.

‘Mongoide’

Mongoid es adecuado para aplicaciones que utilizan el marco Ruby on Rails. Usando el ODM Mongoid como un ORM MongoDB para aplicaciones basadas en Ruby, los programadores pueden trabajar más fácilmente con los recursos de la base de datos ya que ya están familiarizados con el lenguaje, como es el beneficio de usar un ODM.

Como ejemplo, aquí hay un fragmento de código que inserta una instancia en la base de datos usando Mongoid.

Person.create!(
first_name: "Ali",
last_name: "Raza"
) # => Person instance

El siguiente es un ejemplo de una consulta MongoDB escrita usando Mongoid.

Person.
where(:dob.gte => "1990-01-01").
in(first_name: [ "Ali", "Raza" ]).
union.
in(first_name: [ "Ahmad" ])

Datos de primavera MongoDB

La opción más popular entre los desarrolladores para un ORM basado en Java para MongoDB es Spring Data MongoDB. Proporciona un modelo consistente basado en Spring para programar nuevas bases de datos.

Puede integrar Spring Data MongoDB en su proyecto Maven utilizando las siguientes dependencias en el archivo pom.xml dentro de la etiqueta <dependencyManagement>.

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-bom</artifactId>
<version>2022.0.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>

Nota: Estas dependencias usan la última versión al escribir este artículo, 2022.0.0.

MongoEngine

MongoEngine es un ODM para MongoDB en Python. Utiliza una API simple de alto nivel y está construido sobre PyMongo, el controlador oficial de MongoDB para Python.

Aquí hay un ejemplo de cómo puede crear un esquema de base de datos en Python usando MongoEngine definiendo una clase que hereda de Documento.

from mongoengine import *
import datetime


class Page(Document):
    title = StringField(max_length=200, required=True)
    date_modified = DateTimeField(default=datetime.datetime.utcnow)

Y aquí hay algunas consultas simples para acceder a la base de datos:

for page in Page.objects:
    print page.title
myPage = Page.objects(title="Title")

Conclusión

En este artículo, hemos descrito en detalle el uso de ORM en MongoDB, que son útiles para minimizar la complejidad del proceso de desarrollo. Un ORM sirve como un traductor que convierte los documentos de su base de datos en objetos en el idioma que está codificando, lo que simplifica la tarea para los programadores.

También hemos discutido el funcionamiento de algunos ejemplos de ORM de MongoDB a vista de pájaro. Entrar en los detalles de cada uno de ellos no será posible dentro del alcance de este artículo.

Esperamos que haya aprendido sobre el concepto de ORM en MongoDB. ¡Seguir aprendiendo!

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub