Ingenieria en Tecnologías de la Información
REPORTE
DE
INVESTIGACIÓN
Universidad Politécnica de Tlaxcala
Abril 2025
Bello Lumbreras Brandon Raymundo
Morales González Williams
Moro Meneses Fernando Alejandro
Rodríguez Meléndez Arturo
Descripción
MongoDB es una base de datos NoSQL orientada a documentos, desarrollada para
ofrecer escalabilidad, alto rendimiento y facilidad de desarrollo. A diferencia de las
bases de datos relacionales (SQL), MongoDB almacena datos en un formato flexible
llamado BSON (una versión binaria de JSON), lo que permite modelar estructuras
de datos dinámicas sin necesidad de definir esquemas fijos.
MongoDB es ampliamente utilizado en aplicaciones web, bigdata, análisis en tiempo
real e inteligencia artificial, gracias a su capacidad para manejar grandes volúmenes
de información y su compatibilidad con diversas plataformas y lenguajes de
programación. Es especialmente útil en entornos donde la escalabilidad y el
rendimiento son prioridades, como en redes sociales, comercio electrónico y
aplicaciones de IoT.
Historia
MongoDB fue desarrollado en 2007 por 10gen, una empresa fundada por Dwight
Merriman, Eliot Horowitz y Kevin Ryan. En sus inicios, MongoDB formaba parte de
una plataforma de computación en la nube, pero en 2009 se convirtió en un proyecto
de código abierto.
A lo largo de los años, MongoDB ha evolucionado significativamente, agregando
características como sharding, replicación, transacciones ACID parciales y
herramientas avanzadas para procesamiento de datos. Actualmente, es uno de los
sistemas de bases de datos NoSQL más utilizados en el mundo, con una gran
comunidad de desarrolladores y una empresa (MongoDB Inc.) que proporciona
soporte y servicios comerciales.
Características
• Modelo de documentos: MongoDB almacena datos en documentos BSON, lo
que permite estructuras flexibles y consultas anidadas sin necesidad de
realizar múltiples uniones (joins) como en bases de datos relacionales.
• Escalabilidad horizontal: Utiliza sharding para dividir los datos en múltiples
servidores, facilitando la distribución de cargas y evitando cuellos de botella.
• Alta disponibilidad: Implementa replica sets, donde múltiples servidores
mantienen copias idénticas de los datos, asegurando redundancia y
recuperación en caso de fallos.
• Consultas avanzadas: Soporta operaciones de agregación, búsquedas
geoespaciales, análisis de datos en tiempo real y procesamiento de grandes
volúmenes de información.
• Índices optimizados: MongoDB permite la creación de índices en cualquier
campo de un documento para mejorar la velocidad de las consultas.
• Transacciones ACID (limitadas): Aunque inicialmente carecía de soporte
para transacciones, MongoDB ahora permite transacciones multidocumento,
aunque no tan robustas como en SQL.
• Compatibilidad con múltiples lenguajes: MongoDB tiene drivers para
JavaScript (Node.js), Python, Java, C#, C++, PHP, Ruby, Go, entre otros.
• Seguridad avanzada: Soporta autenticación, autorización basada en roles,
cifrado de datos en reposo y en tránsito, y control de acceso detallado.
Ventajas
• Alto rendimiento en operaciones de lectura y escritura.
• Escalabilidad eficiente mediante el uso de sharding y replicación.
• Esquema flexible, permitiendo cambios dinámicos en la estructura de los
datos.
• Fácil integración con tecnologías modernas, como microservicios, big data y
analítica en tiempo real.
• Amplia comunidad y soporte empresarial, con documentación detallada y
foros activos.
Desventajas
• No es 100% ACID: A pesar de las transacciones multidocumento, no es tan
robusto como SQL en entornos críticos financieros.
• Mayor consumo de almacenamiento: BSON introduce sobrecarga de tamaño
en comparación con JSON.
• Curva de aprendizaje: Para quienes vienen de SQL, la estructura y consultas
en MongoDB pueden requerir adaptación.
• Uso intensivo de RAM: Para un rendimiento óptimo, MongoDB prefiere
almacenar índices en memoria, lo que puede ser costoso en términos de
recursos.
Licencia
Desde 2018, MongoDB está bajo la Server Side Public License (SSPL), una variante
de la licencia GPL. La SSPL permite el uso gratuito del software, pero impone
restricciones en el caso de servicios en la nube que ofrezcan MongoDB como una
plataforma comercial. Antes de SSPL, MongoDB utilizaba la GNU Affero General
Public License (AGPL).
Para usos comerciales, MongoDB ofrece versiones con soporte y características
adicionales bajo la marca MongoDB Atlas.
Sistema Operativo
MongoDB es un software multiplataforma, compatible con los siguientes sistemas
operativos:
• Windows (a partir de Windows Server 2016 y versiones de escritorio
modernas como Windows 10 y 11)
• Linux (Ubuntu, Debian, CentOS, Red Hat, SUSE, Amazon Linux)
• macOS (soporte oficial en versiones recientes)
• Docker (puede ejecutarse en contenedores para mayor portabilidad)
Evidencias de instalación:
Una vez Instalado y verificando que todo este correcto, hay que abrir el CMD, e ingresar el
siguiente comando:
Si todo esta correcto nos dará la siguiente salida, este comando espera la conexión de Mongo
DB:
Abrimos otra ventana del símbolo del sistema y ponemos el siguiente comando para crear la
conexión:
Si todo esta correcto nos dará la siguiente salida en la cual nos da la conexión como una
dirección, así como el puerto, desde este punto ya podemos empezar a escribir comandos para
interactuar con MongoDB, como crear una base de datos.
Ingresaremos el siguiente comando para ver las bases de datos existentes:
Nos dará como salida lo que se muestra en la imagen, lo cual significa que hay tres Bases de
datos la cuales son las predeterminadas:
Crear DB
Para crear la base datos introduciremos el siguiente comando: (como se muestra en la Ilustración 1)
Ilustración 1: Comando para usar o crear la base datos
Aquí se usará esa base de datos si es que existe en caso de que la base de datos no exista
Mongo DB la creara y la comenzara a utiliza, si todo salió bien nos debería de dar una salida
como la de la imagen: (como se muestra en la Ilustración 2)
Ilustración 2: Comando ejecutado para usar o crear la base datos
Desde este punto ya tenemos creada la base de datos y podemos empezar a hacer inserciones
más adelante.
Manipulación de la DB
Inserción
Para insertar datos en una colección (equivalente a una tabla en bases de datos relacionales),
utilizaremos un comando con una estructura como la que aparece a continuación, en el cual
tenemos el nombre de la tabla que es usuarios en esta tabla se encuentran los campos
nombre, edad y ciudad como se muestra a continuación (como se muestra en la Ilustración 3)
Ilustración 3: Comando para insertar un registro
Damos enter y si lo hicimos bien nos dará la siguiente salida: (como se muestra en la Ilustración 4)
Ilustración 4: Comando ejecutado para insertar un registro
De igual forma podemos ingresar varios registros en un mismo código, como se muestra: (como se
muestra en la Ilustración 5)
Ilustración 5: Comando para ingresar varios registros
Si se ejecuto correctamente el comando nos dará la siguiente salida: (como se muestra en la Ilustración 6)
Ilustración 6 Comando ejecutado para ingresar varios registros
Actualización
Por ejemplo, actualizar la edad del usuario llamado Juan lo haremos con el siguiente comando:
(como se muestra en la Ilustración 7)
Ilustración 7: Comando para actualizar un campo en un registro
Nos dará la siguiente salida si se realizó de forma adecuada: (como se muestra en la Ilustración 8)
Ilustración 8: Comando ejecutado para actualizar un campo en un registro
O por ejemplo agregar un campo a un registro en este caso Agregar un campo llamado país a
los usuarios que viven en Madrid: (como se muestra en la Ilustración 9)
Ilustración 9: Comando para agregar un campo a un registro existente
Salida: (como se muestra en la Ilustración 10)
Ilustración 10: Comando ejecutado para agregar un campo a un registro existente
Eliminación
Para eliminar documentos, MongoDB proporciona los métodos deleteOne() y deleteMany(),
veamos primero deleteOne() que se utiliza para eliminar un solo registro: (como se muestra en la
Ilustración 11)
Ilustración 11: Comando para eliminar un solo registro en base a una condición
Si todo salió bien nos dará una salida como esta: (como se muestra en la Ilustración 12)
Ilustración 12: Comando ejecutado para eliminar un solo registro en base a una condición
Ahora deleteMany() se utiliza para eliminar uno o más registro de acuerdo a una similitud en
este caso queremos eliminar a los usuarios que viven en Madrid: (como se muestra en la Ilustración 13)
Ilustración 13: Comando para eliminar varios registros en base a una condición
En este caso como teníamos un registro con esa coincidencia, nos dará la siguiente salida: (como
se muestra en la Ilustración 14)
Ilustración 14: Comando ejecutado para eliminar varios registros en base a una condición
Consultas
Para consultar toda la información como lo haría un Select * from aquí utilizamos el siguiente
comando: (como se muestra en la Ilustración 15)
Ilustración 15: Comando para obtener todos los registros de una tabla o colección
En este caso nos dará todos los registros, pero como anteriormente eliminados dos de tres
registros que teníamos, solo nos muestra un registro de esta manera: (como se muestra en la Ilustración 16)
Ilustración 16: Comando ejecutado para obtener todos los registros de una tabla o colección
Agregaremos un par de registros más para entenderlo de mejor manera (como se muestra en la Ilustración
17 y 18)
Ilustración 17: Comando para ingresar varios registros
Ilustración 18: Comando ejecutado para ingresar varios registros
Ingresamos el comando de búsqueda o consulta y como observamos nos da todos los registros:
(como se muestra en la Ilustración 19)
Ilustración 19: Comando ejecutado para obtener todos los registros de una tabla o colección
Y si queremos hacer un filtrado especifico por ejemplo donde la edad sea mayor de 2
utilizamos operadores como $gt (mayor que) y la estructura del siguiente comando: (como se
muestra en la Ilustración 20)
Ilustración 20: Comando para filtrar un registro que cumpla una condición
Nos dará solo dos registros ya que Johann tiene 20 y no cumple la condición: (como se muestra en la
Ilustración 21)
Ilustración 21: Comando ejecutado para filtrar un registro que cumpla una condición una condición
Otro ejemplo de otro filtrado puede ser que se muestren los registros donde el usuario sea de
México: (como se muestra en la Ilustración 22)
Ilustración 22: : Comando para filtrar un registro de otra manera
Referencias
Chodorow, K. (2013). MongoDB: The Definitive Guide. O'Reilly Media.
MongoDB Inc. (2024). MongoDB Documentation.
https://www.mongodb.com/docs/
Redmond, E. (2012). Seven Databases in Seven Weeks: A Guide to
Modern Databases and the NoSQL Movement. Pragmatic Bookshelf.
Sadalage, P. & Fowler, M. (2013). NoSQL Distilled: A Brief Guide to the
Emerging World of Polyglot Persistence. Addison-Wesley.
Strauch, C. (2011). NoSQL Databases. Stuttgart Media University.