1. Introducción a MongoDB

1. ¿Qué es MongoDB?

MongoDB es una base de datos NoSQL orientada a documentos.
Características principales:

  • Guarda la información en documentos JSON (llamados BSON internamente).
  • No usa tablas ni filas como en SQL.
  • Es flexible: cada documento puede tener campos distintos.
  • Escalable y ampliamente usado en desarrollo web.

Ejemplo de documento en MongoDB:

{
  "nombre": "Pedro",
  "edad": 23,
  "ciudad": "Madrid"
}

2. Instalación en Ubuntu/Debian

2.1. Actualizar el sistema

sudo apt update && sudo apt upgrade -y

2.2. Instalar MongoDB desde repositorios oficiales (recomendado)

  1. Importar la clave GPG:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
  1. Añadir el repositorio:
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] \
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

  1. Instalar MongoDB:
sudo apt update
sudo apt install -y mongodb-org

3. Iniciar, detener y habilitar el servicio

MongoDB se gestiona con systemctl:

  • Iniciar:
sudo systemctl start mongod
  • Detener:
sudo systemctl stop mongod
  • Reiniciar:
sudo systemctl restart mongod
  • Ver estado:
sudo systemctl status mongod
  • Habilitar al arranque:
sudo systemctl enable mongod

Comprobar que funciona:

mongosh

Si aparece el prompt test>, está funcionando correctamente.


4. Acceso a la Consola de MongoDB (mongosh)

La herramienta principal para trabajar con MongoDB por consola es:

mongosh

Al entrar, verás un prompt similar a:

test>

test es la base de datos por defecto.


5. Comandos básicos

5.1. Mostrar bases de datos

show dbs

5.2. Cambiar o crear una base de datos

use tienda

Si no existe, MongoDB la creará al guardar datos.

5.3. Ver colecciones

Una colección es equivalente a una tabla en SQL.

show collections

5.4. Insertar documentos

Ejemplo:

db.clientes.insertOne({ nombre: "Ana", edad: 25, ciudad: "Sevilla" })

o varios a la vez:

db.clientes.insertMany([
  { nombre: "Luis", edad: 30 },
  { nombre: "María", edad: 27 }
])

5.5. Consultas (búsquedas)

Mostrar todos:

db.clientes.find()

Filtrar:

db.clientes.find({ edad: { $gt: 25 } })

5.6. Actualizar documentos

Modificar un campo:

db.clientes.updateOne(
  { nombre: "Ana" },
  { $set: { ciudad: "Granada" } }
)

5.7. Borrar documentos

Borrar uno:

db.clientes.deleteOne({ nombre: "Luis" })

Borrar varios:

db.clientes.deleteMany({ edad: { $lt: 28 } })

5.8. Borrar una colección entera

db.clientes.drop()

5.9. Borrar una base de datos

Primero entrar en ella:

use tienda

Luego eliminarla:

db.dropDatabase()

6. Estructura conceptual

En MongoDB la jerarquía es:

Servidor → Bases de datos → Colecciones → Documentos → Campos

Ejemplo:

  • Base de datos: tienda
  • Colección: productos
  • Documento:
{
  "nombre": "Galletas",
  "precio": 1.20,
  "stock": 50
}

7. Exportación e Importación (extra)

Exportar una colección:

mongoexport --db tienda --collection clientes --out clientes.json

Importar:

mongoimport --db tienda --collection clientes --file clientes.json

8. Detener el servicio y desinstalar (opcional)

Detener:

sudo systemctl stop mongod

Desinstalar:

sudo apt purge mongodb-org -y
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

Práctica Guiada: “MongoDB en la USS Horizon”

La USS Horizon ha sido enviada a explorar un cúmulo estelar cercano a Andoria. La tripulación científica necesita un sistema de gestión para almacenar informes, muestras biológicas, registros de comunicaciones y perfiles de planetas. Como Oficial de Ingeniería Informática, tu misión es instalar un sistema MongoDB en el núcleo de datos del servidor de la nave, aprender a administrarlo por consola y cargar registros básicos.


FASE 1 — Instalación del Servidor MongoDB

Instalar MongoDB en el servidor Linux de la USS Horizon.

Procedimiento

  1. Accede al servidor (terminal local o SSH).
  2. Actualiza los paquetes del sistema:
sudo apt update && sudo apt upgrade -y
  1. Añade la llave GPG del “repositorio de la Federación”:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
  1. Activa el repositorio estable:
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] \
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
  1. Instala MongoDB:
sudo apt update
sudo apt install -y mongodb-org

Validación

Si no ha habido errores, MongoDB está instalado en el servidor auxiliar del núcleo de datos.


FASE 2 — Arranque del Núcleo de Datos MongoDB

Objetivo

Levantar el servicio mongod y verificar su estado.

Procedimiento

  1. Inicia el servicio:
sudo systemctl start mongod
  1. Comprueba su estado operativo:
sudo systemctl status mongod
  1. Actívalo para que arranque con el sistema de la nave:
sudo systemctl enable mongod

Validación

Si el servicio está activo, el núcleo de datos está disponible.


FASE 3 — Acceso al Observador de Datos (mongosh)

Objetivo

Acceder a la consola interactiva de MongoDB.

Procedimiento

Entrada al núcleo:

mongosh

Resultado esperado:

test>

Ese prompt indica que estás dentro del sistema base.


FASE 4 — Organización del Archivo Estelar

En la Flota Estelar, los registros se organizan por sectores. En MongoDB será así:

Servidor → Bases de datos → Colecciones → Documentos → Campos

FASE 5 — Creación de Base de Datos y Colecciones

Objetivo

Crear una base de datos para almacenar datos del Sector Andoria.

Procedimiento

  1. Cambia a la base de datos andoria_sector:
use andoria_sector

Ahora crearás una colección llamada planetas.

  1. Inserta un documento básico:
db.planetas.insertOne({
  nombre: "Andoria",
  especie_principal: "Andoriano",
  clima: "Frío",
  alineacion: "Federación",
  tecnologia: "Warp"
})
  1. Comprueba el contenido:
db.planetas.find()

FASE 6 — Manejo de Registros Científicos

Objetivo

Insertar, buscar, actualizar y eliminar registros.

A) Inserciones múltiples

Añade varios planetas explorados:

db.planetas.insertMany([
  { nombre: "Vulcano", especie_principal: "Vulcano", alineacion: "Federación", tecnologia: "Warp" },
  { nombre: "Qo'noS", especie_principal: "Klingon", alineacion: "Imperio Klingon", tecnologia: "Warp" },
  { nombre: "Romulus", especie_principal: "Romulano", alineacion: "Imperio Estelar", tecnologia: "Warp" }
])

B) Consultas

Lista los planetas:

db.planetas.find()

Filtra por alineación:

db.planetas.find({ alineacion: "Federación" })

C) Actualizaciones

El Consejo Andoriano ha cambiado la clasificación de Andoria:

db.planetas.updateOne(
  { nombre: "Andoria" },
  { $set: { clima: "Ártico" } }
)

D) Eliminaciones

Tras un incidente diplomático, se decide borrar temporalmente un registro:

db.planetas.deleteOne({ nombre: "Romulus" })

Comprueba que desapareció:

db.planetas.find()

FASE 7 — Gestión de Colecciones y Base de Datos

Ver colecciones existentes

show collections

Eliminar una colección entera

Ejemplo:

db.planetas.drop()

Eliminar una base de datos

Primero asegúrate de estar en ella:

use andoria_sector

Luego:

db.dropDatabase()

FASE 8 — Exportación e Importación (Bitácora Estelar)

Para generar bitácoras externas:

Exportar colección:

mongoexport --db andoria_sector --collection planetas --out planetas.json

Importar colección:

mongoimport --db andoria_sector --collection planetas --file planetas.json

FASE 9 — Cierre del Núcleo

Puedes detener el servicio si la nave entra en modo de sigilo:

sudo systemctl stop mongod