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.
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.
Visita la página oficial, selecciona la versión de Windows y comienza la descarga.
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
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 --dearmor
Agrega 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.list
Actualiza la lista de paquetes:
sudo apt update
Instala 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.
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=majority
Reemplaza <nombre_de_usuario>, <contraseña>, <dirección_del_cluster> y <base_de_datos> con las credenciales y detalles de conexión reales.
Una vez conectado, puedes trabajar con las bases de datos. Antes de eso, la interfaz muestra un mensaje de bienvenida:

La base de datos asignada en una nueva instancia de Shell se llama test. Es segura para realizar pruebas.
Las operaciones útiles se detallan a continuación:
Ejecuta show dbs para obtener una vista de todas las bases de datos disponibles:
show dbs

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

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.
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'}
])

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.
Al trabajar con la Shell, las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) son esenciales. Realicemos algunas básicas:
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" })

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

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 } })

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" })

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.
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.
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

mapFunction emite la age como clave y el salario como valor.reduceFunction suma los salarios de cada grupo de age.db.results.find().forEach(printjson).El resultado se muestra a continuación:

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 })

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 })

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)

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)

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.
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.