Cómo usar MongoDB Shell
MongoDB Shell es un entorno REPL (Read-Eval-Print Loop) adaptable basado en JavaScript y Node.js para trabajar con implementaciones de MongoDB. Es una herramienta esencial para consultar datos, administrar bases de datos y ejecutar diversas operaciones. Ofrece una interfaz atractiva para gestionar bases de datos, tanto en un servidor remoto como localmente en MongoDB.
Este artículo muestra paso a paso cómo utilizar MongoDB Shell.
Paso 1: Instalación de MongoDB Shell Copiar enlace
Antes de comenzar, asegúrate de que MongoDB Shell esté instalado en el sistema. Si no es así, descarga la versión adecuada desde el sitio oficial y sigue las instrucciones de instalación correspondientes.
Windows Copiar enlace
Visita la página oficial, selecciona la versión de Windows y comienza la descarga.
macOS Copiar enlace
En la página oficial, elige la versión para macOS y comienza la descarga. Alternativamente, puedes usar Homebrew ejecutando los siguientes comandos:
brew tap mongodb/brew
brew install mongosh
Linux Copiar enlace
Consulta las instrucciones proporcionadas en el sitio web para el sistema operativo Linux. Por ejemplo, en un sistema basado en Debian, sigue estos pasos:
Agrega la clave GPG del repositorio de MongoDB:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmorAgrega el repositorio de MongoDB a tu sistema:
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.listActualiza la lista de paquetes:
sudo apt updateInstala MongoDB:
sudo apt install mongodb-org -y
Una vez instalada correctamente, verifica la versión instalada:
mongod --version
Después de la instalación, habilita, inicia y revisa el servicio:
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

Si buscas una solución confiable, de alto rendimiento y económica para tus flujos de trabajo, Hostman ofrece opciones de alojamiento VPS Linux, incluyendo Debian VPS, Ubuntu VPS y VPS CentOS.
Paso 2: Conectarse a una instancia Copiar enlace
Una vez instalado, puedes establecer una conexión con una instancia. Si es local, introduce mongosh. Por defecto, se conecta a la instancia que se ejecuta en el puerto 27017 en localhost:
mongosh
La siguiente sintaxis se utiliza para conectarse a un servidor remoto:
mongodb+srv://<nombre_de_usuario>:<contraseña>@<dirección_del_cluster>/<base_de_datos>?retryWrites=true&w=majorityReemplaza <nombre_de_usuario>, <contraseña>, <dirección_del_cluster> y <base_de_datos> con las credenciales y detalles de conexión reales.
Paso 3: Navegación en la terminal Copiar enlace
Una vez conectado, puedes trabajar con las bases de datos. Antes de eso, la interfaz muestra un mensaje de bienvenida:

Las operaciones útiles se detallan a continuación:
Explorar todas las bases de datos Copiar enlace
Ejecuta show dbs para obtener una vista de todas las bases de datos disponibles:
show dbs
Acceder a la base de datos actual Copiar enlace
La mayoría de los comandos operan sobre una base de datos o una colección contenida en ella. El objeto db representa la base de datos seleccionada actualmente y está disponible:
db
Cambiar de base de datos Copiar enlace
Introduce el comando use junto con el nombre de la base de datos, por ejemplo new_db, para crearla o cambiar a ella:
use new_db
Reemplaza new_db con el nombre real de la base de datos.
Insertar un objeto Copiar enlace
Primero, inserta un objeto con un nombre en student_data dentro de la base de datos new_db existente:
db.student_data.insertOne({name: 'School has 500 students'})
También puedes insertar varios documentos en student_data, cada uno con un campo name con valores específicos. Esto permite la inserción por lotes de datos en la colección:
db.student_data.insertMany([
{name: 'School has 500 students'},
{name: 'School has 600 students'}
])

Ver colecciones Copiar enlace
Una vez insertados los datos, muestra las colecciones existentes:
show collections
Si no deseas realizar más tareas, sal de la interfaz ejecutando:
exit
Ya has aprendido las operaciones básicas de la Shell.
Paso 4: Operaciones CRUD Copiar enlace
Al trabajar con la Shell, las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) son esenciales. Realicemos algunas básicas:
Crear/Insertar datos Copiar enlace
Al insertar nueva información en una colección, utiliza la función insertOne. Creamos una nueva colección y la llenamos con la información requerida, incluyendo name (nombre), age (edad) y city (ciudad):
db.collection.insertOne({ name: "Harry", age: 45, city: "Sydney" })
Buscar/Leer datos Copiar enlace
Puedes consultar documentos asociados con la colección usando la función find. Por ejemplo, se recuperan todas las entradas con una age mayor a 25:
db.collection.find({ age: { $gt: 25 } }) // Condición donde la edad es mayor a 25
Modificar datos Copiar enlace
Usa las funciones updateOne o updateMany para modificar documentos existentes. Por ejemplo, la age de Harry se actualiza a 50:
db.collection.updateOne({ name: "Harry" }, { $set: { age: 50 } })
Eliminar datos Copiar enlace
Usa los métodos deleteOne o deleteMany para eliminar documentos de la colección. Este comando elimina un documento con el valor John en el campo name:
db.collection.deleteOne({ name: "John" })
Paso 5: Uso avanzado Copiar enlace
En este paso, realiza operaciones complejas mediante funciones avanzadas. Con herramientas de depuración, análisis de rendimiento y optimización, la Shell te ayuda a detectar cuellos de botella y mejorar tu configuración.
Canalización de agregación (Aggregation Pipeline) Copiar enlace
Con las canalizaciones puedes procesar registros y obtener resultados calculados. Usando canalizaciones, puedes crear análisis y transformaciones complejas para extraer información valiosa de los datos sin procesar. Para ejecutar una canalización de etapas, utiliza la función aggregate. Aquí un ejemplo básico:
db.collection.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$city", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])

En este script, la canalización filtra documentos con estado A, los agrupa por city, suma los montos y ordena los resultados en orden descendente.
Una herramienta poderosa para el análisis y la transformación de datos es la canalización de agregación. Está compuesta por varias etapas, cada una de las cuales transforma el flujo de documentos. Estas etapas incluyen:
$project: selecciona o excluye campos específicos.
$match: aplica una condición de consulta para filtrarlos.
$group: agrupa entradas por un campo y calcula agregaciones.
$sort: ordena los registros según un campo dado.
$limit: limita la cantidad de registros.
$skip: omite una cantidad específica de registros.
MapReduce Copiar enlace
Un paradigma eficaz para procesar grandes conjuntos de datos. Para ejecutar trabajos de MapReduce, utiliza el comando mapReduce:
// Datos de ejemplo
db.collection.insertMany([
{ name: "Harry", age: 25, salary: 5000 },
{ name: "Buttler", age: 30, salary: 6000 },
{ name: "Morgan", age: 35, salary: 7000 }
]);
// Función Map
var mapFunction = function() {
emit(this.age, this.salary);
};
// Función Reduce
var reduceFunction = function(keyAge, valuesSalaries) {
return Array.sum(valuesSalaries);
};
// Ejecutar MapReduce
db.runCommand({
mapreduce: "collection",
map: mapFunction,
reduce: reduceFunction,
out: "results"
});
db.results.find().forEach(printjson); // Mostrar resultados

- En este ejemplo, la función
mapFunctionemite laagecomo clave y el salario como valor. - La función
reduceFunctionsuma los salarios de cada grupo deage. - Los resultados se almacenan en una nueva colección llamada results, y la salida final se muestra con
db.results.find().forEach(printjson).
El resultado se muestra a continuación:

Proyección Copiar enlace
Usa el operador de proyección para especificar qué campos incluir o excluir en el conjunto de resultados. Recupera toda la información asociada a una consulta, por ejemplo, mostrando solo los campos name y age. Esto te permite visualizar resultados específicos y excluir otros. Proyectemos solo los campos name y age:
db.collection.find({}, { name: 1, age: 1 }) 
Ordenar Copiar enlace
Ordena los resultados usando la función sort. Recupera todos los documentos del conjunto y luego los ordena en orden descendente según la age. Muestra primero los valores más altos. Ordenemos por age en orden descendente:
db.collection.find().sort({ age: -1 }) 
Limitar Copiar enlace
Usa la función limit para restringir la cantidad de resultados. Por ejemplo, obtén los tres primeros documentos de la colección. Es útil para obtener una vista previa de un subconjunto pequeño sin recuperar toda la lista. Limitemos a 3 resultados:
db.collection.find().limit(3) 
Saltar (Skip) Copiar enlace
Puedes omitir entradas usando la función skip. Por ejemplo, saltar los dos primeros documentos vinculados a la colección. Es útil para paginar resultados o ignorar los primeros registros. Saltemos los primeros 2 resultados:
db.collection.find().skip(2) 
Paso 6: Scripting con Shell Copiar enlace
Los usuarios pueden escribir scripts para automatizar tareas dentro de la Shell. Para hacerlo, guarda el script en un archivo .js y ejecútalo con mongosh. Es útil para realizar tareas repetitivas de forma eficiente, como inserción de datos o actualizaciones por lotes:
mongosh script.js
Al dominar los comandos de MongoDB, obtendrás información valiosa sobre tus datos.
Conclusión Copiar enlace
Con la interfaz interactiva de MongoDB Shell, puedes realizar tareas administrativas repetitivas como escribir, leer y modificar datos. Además, consultar colecciones existentes, añadir nuevos objetos a la base de datos y ejecutar tareas de administración. Desde operaciones CRUD simples hasta agregaciones y scripts avanzados, los usuarios pueden aprovechar la interfaz para realizar una gran variedad de actividades.
Ejecutando scripts, los lectores pueden realizar tareas repetitivas de forma eficiente. Este tutorial ha cubierto la instalación, configuración y tareas administrativas para gestionar bases de datos, sus colecciones y usuarios.