Instalar MongoDB en Windows
CategoriasBases de datosNoSQL

Instalar MongoDB en Windows

Instalar MongoDB en Windows

Como ya escribí en el artículo “Introducción a NoSQL”, MongoDB es una base de datos NoSQL de tipo documental, es decir, trabaja con un modelo de datos documental, o séase, con archivos en formato JSON y BSON.

Está disponible para trabajar en varios sistemas operativos y sobre varios lenguajes de programación.

Este articulo pretende explicar la instalación y uso de un servidor MongoDB bajo Windows y su posterior uso desde la línea de comandos (shell), para más adelante poder trabajar con MongoDB usando algún lenguaje de programación como PHP.

Instalación

Bastará con buscar el instalador correcto desde la página oficial aquí.

Aunque desde la misma web oficial puedes descargarte el “instalador” para el sistema operativo que desees. Desde Linux hasta MacOS.

Nosotros nos centramos en Windows 🤷‍♂️​

El proceso de instalación es bastante simple.

Ejecutamos el instalador descargado y nos asegurarnos de marcar MongoDB como un servicio:

Para después de darle a siguiente, elegir si instalamos o no MongoDB Compass, el cual es una interfaz gráfica para manejar la base de datos:

Como ya digo, a elección de cada un@ 😉

Por ahora el uso de MongoDB Compass no lo vamos a ver. Nos centraremos en usarlo a través de la línea de comandos.

Continuemos…

Después de la instalación, si no lo está ya, agrega el directorio bin de MongoDB al PATH del sistema y crea el directorio C:\data\db, que será donde MongoDB almacenara los datos.

Ahora, para comprobar que el servidor está corriendo o para iniciarlo, en la línea de comandos escribimos:

mongod

Y deberíamos de ver algo así:

{"t": ... "msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}

Ahora bien, ya tenemos el servidor MongoDB instalado, pero si queremos interactuar con la base de datos desde la línea de comandos, como haríamos con un servidor MySQL, por ejemplo, debemos de descargar lo que se conoce como MongoDB Shell.

El proceso de instalación es bastante simple; siguiente, siguiente…

Lo único de lo que debemos de asegurarnos es de, una vez más, agregar al PATH del sistema el directorio donde se ha instalado mongosh.

En mi caso quedaría así:

Abrimos otra línea de comandos y escribimos:

mongosh

Si hemos hecho todo correctamente, mongosh se conectará al servidor y mostrará el prompt de MongoDB.

Una vez hayamos hecho toooodo esto, que no es poco, vayamos al lio. Ahora sí, empezaremos por crear una base de datos.

Selección o creación de una base de datos

Para usar una base de datos en concreto, usamos el comando:

use baseDePruebas

Tranquil@, si esta no existe, se creará automáticamente cuando insertemos datos en ella.

Crear o insertar datos

Para insertar datos y a la vez crear la base de datos (sino existe), basta con hacer:

db.Usuarios.insertOne({ nombre: "Óscar", edad: 36, profesion: "Desarrollador" })

El proceso sería el siguiente:

Creo que es bastante fácil, no tiene perdida.

Un asunto a resaltar aquí, es que MongoDB llama “colecciones” a lo que serían las tablas en bases de datos relacionales. Y “documentos”, a los datos o, para entendernos mejor, un documento en MongoDB equivaldría a una fila en una tabla relacional.

Debemos de acostumbrarnos a esto. Tenlo en cuenta a partir de ahora.

Lo que acabamos de hacer, en la jerga de MongoDB, ha sido, primero crear una base de datos llamada “baseDePruebas” (que alarde de originalidad 😅​) y después crear una colección (que vendría a ser una tabla) llamada “Usuarios” con un documento que contiene nombre, edad y profesión.

Lo dicho, fácil ¿no?

Recuerda que en MongoDB o, mejor dicho, en una base de datos NoSQL, no hace falta especificar el tipo de dato a guardar.

Insertar múltiples documentos

Ahora vamos a insertar de una vez varios datos (varios documentos) en nuestra colección de “Usuarios”. Para ello, en lugar de insertOne(), usamos insertMany():

db.Usuarios.insertMany([
  { nombre: "Ana", edad: 25, profesion: "Programadora" },
  { nombre: "Pepe", edad: 35, profesion: "Arquitecto" }
])

Obtener todos los documentos

Para obtener todos los documentos que hemos creado en nuestra colección:

db.Usuarios.find()

Buscar un documento específico

Lo que equivaldría a buscar una fila:

db.Usuarios.find({ profesion: "Programadora" })

Actualización de datos

Tenemos la opción de actualizar o bien un documento con updateOne o, varios documentos con updateMany.

Por ejemplo, actualicemos la profesión de Ana. En lugar de programadora ahora se dedica al diseño:

db.Usuarios.updateOne(
  { nombre: 'Ana' },
  { $set: { profesion:  'Diseñadora gráfica' } }
)

Ahora vamos actualizar la profesión de todos los documentos.

Por ejemplo, supongamos que queremos que todos tengan la misma profesión:

db.Usuarios.updateMany(
  {}, // Filtro: selecciona todos los documentos
  { $set: { profesion: 'Freelancer' } } 
)

Como ves todas las profesiones han sido cambiadas a “Freelancer”.

Ahora me paro aquí, y hablemos un poco de los filtros.

Lo que acabamos de hacer es que mediante el primer argumento del método updateMany(), es decir, {}, hemos seleccionado todos los documentos.

¿Pero qué pasa si queremos aplicar alguna condición o filtro en concreto?

Supongamos que queremos cambiar la profesión a «Senior Developer» pero solo para los usuarios cuya edad sea 35.

Haríamos así:

db.Usuarios.updateMany(
  { edad: 35 }, 
  { $set: { profesion: "Senior Developer" } } 
)

Ahora el usuario “Pepe” es un “Senior Developer” 😀​

Pero ahora… ¿Y si queremos ser más específicos y actualizar solo la profesión de los usuarios que sean menores de 35 haciendo que sean «Junior»?

Para eso tenemos varios tipos de operadores que podemos combinar para crear una condición como son:

  • $eq: equal/igual que
  • $gt: greater than/mayor que
  • $lt: low than/menor que
  • $ne: not equal/distinto que
  • $lte: low than equal/menor o igual que

Y muchos más que puedes consultar aquí.

Para el ejemplo, haríamos así:

db.Usuarios.updateMany(
  { edad: { $lt: 35 } }, 
  { $set: { profesion: "Junior Developer" } } 
)

Como Ana es la única que cumple la condición, es la única que cambia su profesión.

Ver colecciones

Para ver las colecciones que tiene una base de datos o, una vez más, lo que equivaldría a las tablas que tiene una base de datos, ejecutaremos el comando siguiente:

show collections

En nuestro ejemplo como se puede ver solo tenemos una colección (tabla) llamada “Usuarios”.

Eliminar datos

Para borrar documentos, usamos deleteOne() para eliminar un documento o deleteMany() para eliminar varios.

Imagina que queremos eliminar el usuario “Pepe”:

db.Usuarios.deleteOne({ nombre: "Pepe" })

Pero recuerda que también podemos hacerlo de otra manera. Aplicando una condición.

Por ejemplo, podemos querer eliminar los usuarios cuya edad sea mayor a 25.

Para eso usaríamos deleteMany() y la condición $gt así:

db.Usuarios.deleteMany({ edad: { $gt: 25 } })

Como ves solo nos quedaría la usuaria “Ana”:

Eliminar una colección al completo

Para eliminar una colección entera (lo que equivaldría a eliminar todas las filas):

db.Usuarios.drop()

Eliminar base de datos

Para eliminar toda la base de datos, debemos primero entrar en esa base de datos, o sea, seleccionar la base de datos y, una vez dentro de ella, ejecutar el comando:

db.dropDatabase()

Y hasta aquí como instalar y trabajar en MongoDB bajo Windows.

Se podría ampliar un poco más el artículo, pero creo que para un primer acercamiento a MongoDB está bien. Además, he de decir que este articulo me ha servido también a mi como aprendizaje ya que nunca había usado MongoDB.

Por último, quiero comentarte que como ya has visto, trabajar con MongoDB desde una línea de comandos, consola, terminal… (llámalo como quieras) es un poco engorroso. No es lo mismo que hacerlo con MySQL mediante consultas SQL, ¿a qué no? 😉​

Es por eso que como dije al principio tenemos la opción de usar MongoDB Compass o, como explico aquí, usar MongoDB con algún lenguaje de programación.

Sobre el autor

Comparte:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos
Responsable Óscar Martínez +info...
Finalidad Gestionar y moderar los comentarios +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios No se cederán datos a terceros, salvo obligación legal +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.