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)
- 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
- 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
- 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
- Accede al servidor (terminal local o SSH).
- Actualiza los paquetes del sistema:
sudo apt update && sudo apt upgrade -y
- 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
- 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
- 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
- Inicia el servicio:
sudo systemctl start mongod
- Comprueba su estado operativo:
sudo systemctl status mongod
- 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
- Cambia a la base de datos
andoria_sector:
use andoria_sector
Ahora crearás una colección llamada planetas.
- Inserta un documento básico:
db.planetas.insertOne({
nombre: "Andoria",
especie_principal: "Andoriano",
clima: "Frío",
alineacion: "Federación",
tecnologia: "Warp"
})
- 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



