Comandos Esenciales de Administración de MongoDB para Principiantes
Mongodb, una base de datos documental NoSQL líder, es conocida por su flexibilidad y escalabilidad. Si bien los desarrolladores a menudo se centran en las operaciones CRUD (Crear, Leer, Actualizar, Eliminar), la gestión eficaz del entorno de la base de datos depende en gran medida de la comprensión de los comandos administrativos esenciales. Esta guía presenta a los principiantes los comandos principales necesarios para la gestión de bases de datos, la administración de usuarios y las comprobaciones del estado del sistema, asegurando que su instancia de MongoDB funcione de manera fluida y segura.
Dominar estas tareas administrativas es crucial para cualquiera que se adentre más allá del simple desarrollo local hacia entornos de producción. Exploraremos cómo interactuar con el shell mongosh para administrar bases de datos, colecciones, usuarios y realizar diagnósticos de sistema necesarios.
Accediendo al Shell de MongoDB (mongosh)
La interfaz principal para ejecutar comandos administrativos es el Shell de MongoDB, al que se accede normalmente utilizando el comando mongosh. Aquí es donde ejecuta comandos basados en JavaScript directamente contra su instancia de MongoDB.
Para conectarse a una instancia local de MongoDB que se ejecuta en el puerto predeterminado (27017), simplemente escriba:
mongosh
Una vez conectado, verá el prompt >, que indica que está listo para emitir comandos.
Comandos de Gestión de Bases de Datos
La gestión de la base de datos que está utilizando actualmente y la visualización de las bases de datos existentes son tareas administrativas fundamentales.
Listar Todas las Bases de Datos
Para ver una lista de todas las bases de datos actualmente presentes en el servidor MongoDB, use el comando show dbs:
> show dbs
admin 40.00 KiB
config 72.00 KiB
local 72.00 KiB
myAppDB 100.00 KiB
Cambiar de Base de Datos
Antes de poder crear una base de datos o colección, debe cambiar el contexto a la base de datos deseada utilizando el comando use. Si la base de datos no existe, MongoDB la creará implícitamente en la primera inserción de datos.
> use myAppDB
switched to db myAppDB
Ver Base de Datos Actual
Para confirmar en qué contexto de base de datos está operando actualmente, use db:
> db
myAppDB
Eliminar una Base de Datos
Advertencia: Esta acción elimina permanentemente todos los datos dentro de la base de datos especificada. Úselo con extrema precaución, especialmente en entornos de producción.
Para eliminar la base de datos actual (la devuelta por db):
> db.dropDatabase()
{ "dropped" : "myAppDB", "ok" : 1 }
Comandos de Gestión de Colecciones
Las colecciones son análogas a las tablas en bases de datos relacionales. Su gestión es sencilla utilizando el atajo del objeto db.
Listar Colecciones
Mientras usa una base de datos específica, liste todas las colecciones dentro de ella usando show collections (o el equivalente db.getCollectionNames() en versiones anteriores):
> show collections
users
products
orders
Crear Colecciones
Las colecciones a menudo se crean automáticamente en la primera inserción. Sin embargo, puede crear explícitamente una usando db.createCollection() para tener control sobre las reglas de validación o el capping.
// Creando una colección estándar llamada 'logs'
> db.createCollection("logs")
{ "ok" : 1 }
Eliminar una Colección
Para eliminar una colección por completo:
> db.logs.drop()
true
Administración de Usuarios y Seguridad
Para cualquier base de datos destinada a uso en producción, asegurar el acceso mediante autenticación de usuarios es obligatorio. La gestión de usuarios se realiza típicamente dentro de la base de datos admin o la base de datos específica donde el usuario debe tener permisos.
Cambiar a la Base de Datos Admin para la Creación de Usuarios
Es una práctica estándar crear usuarios administrativos en la base de datos admin, aunque los usuarios basados en roles se pueden crear en bases de datos de aplicaciones.
> use admin
switched to db admin
Crear un Usuario
Use db.createUser() para agregar un nuevo usuario. Esto requiere especificar el nombre de usuario, una contraseña segura y los roles asignados.
> db.createUser(
... {
... user: "appAdmin",
... pwd: passwordPrompt(), // Solicita la contraseña de forma segura
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWrite" ]
... }
... )
- Consejo: Se recomienda encarecidamente usar
passwordPrompt()en lugar de incrustar contraseñas en texto plano en scripts.
Listar Usuarios
Para ver los usuarios existentes dentro de la base de datos actual:
> show users
Monitoreo y Diagnóstico del Sistema
Los administradores necesitan formas de verificar el estado, la condición y la configuración de la instancia de MongoDB en ejecución.
Comprobar el Estado del Servidor
El comando serverStatus devuelve un documento completo que detalla las estadísticas sobre el funcionamiento del servidor, incluido el uso de memoria, las conexiones y las operaciones.
> db.serverStatus()
// La salida será un gran documento JSON que contiene métricas.
Ver Conexiones Actuales
Para ver las conexiones de clientes activas, puede consultar el comando currentOp o buscar dentro de la salida de serverStatus en la sección de conexiones. Una forma directa de ver las operaciones actuales es:
> db.currentOp()
Comprobar la Configuración
Para ver la configuración aplicada actualmente a la instancia:
> db.getMongo().getDB('admin').runCommand({ getParameter: 1, all: 1 })
Resumen y Próximos Pasos
Estos comandos esenciales —que cubren el cambio de base de datos, la gestión de colecciones, la creación de usuarios y el monitoreo básico— forman la base de una administración eficaz de MongoDB. Si bien mongosh proporciona retroalimentación inmediata, el monitoreo avanzado a menudo requiere la integración con MongoDB Compass o el uso de la interfaz de MongoDB Atlas para diagnósticos visuales.
Mejor Práctica: Conéctese siempre con credenciales y restrinja los roles de usuario a los permisos mínimos necesarios (Principio de Mínimo Privilegio).
Comience a practicar estos comandos en un entorno que no sea de producción para ganar confianza antes de administrar almacenes de datos críticos.