¿Cómo me conecto a una base de datos específica en Mongosh?

Conectarse a MongoDB: Guía Completa

Valoración: 4.45 (4192 votos)

Conectarse a una base de datos es el primer paso fundamental para interactuar con ella, ya sea para desarrollar una aplicación, realizar tareas de administración o simplemente explorar los datos. En el mundo de las bases de datos NoSQL, MongoDB es una opción muy popular. Entender cómo establecer una conexión robusta y segura es crucial para cualquier desarrollador o administrador.

MongoDB ofrece diversas formas de conexión, adaptándose a diferentes escenarios, desde un entorno de desarrollo local hasta despliegues complejos en la nube o en servidores remotos. La herramienta más común para interactuar directamente desde la línea de comandos es el shell de MongoDB, conocido como mongosh. Además de mongosh, la conexión se realiza a través de drivers específicos para cada lenguaje de programación (Node.js, Python, Java, etc.), pero los principios subyacentes y la estructura de la información de conexión son muy similares.

¿Cómo puedo conectarme a una base de datos en MongoDB?
En la Interfaz web de MongoDB Atlas, busque el clúster al que conectarse y haga clic en el botón “Conectar“ junto a su nombre. En la siguiente pantalla, seleccione el método que está utilizando para conectarse a MongoDB y se le proporcionará una cadena de conexión adecuada para su clúster.
Índice de Contenido

¿Qué es una Cadena de Conexión en MongoDB?

Una Cadena de Conexión (Connection String) es una URL especial que encapsula toda la información necesaria para que un cliente (como mongosh o un driver) se conecte a una instancia o clúster de MongoDB. Es la forma estándar y recomendada de especificar los detalles de conexión.

Las cadenas de conexión comienzan con un prefijo que indica el protocolo. Los dos prefijos principales son:

  • mongodb://: Es el prefijo tradicional. Especifica directamente uno o más hosts y puertos de los procesos mongod o mongos a los que el cliente debe intentar conectarse.
  • mongodb+srv://: Es un prefijo más moderno que utiliza registros DNS SRV. Permite al cliente descubrir automáticamente los hosts y puertos de los miembros de un conjunto de réplicas o de los procesos mongos de un clúster fragmentado, sin necesidad de listarlos explícitamente en la cadena.

Entendiendo las Cadenas de Conexión SRV

La cadena de conexión SRV, que comienza con mongodb+srv://, es particularmente útil para conexiones a conjuntos de réplicas (Replica Set) y clústeres fragmentados (Sharded Clusters), especialmente en entornos como MongoDB Atlas. La principal ventaja es su simplicidad y resiliencia.

En lugar de especificar una lista de servidores como en una cadena mongodb:// tradicional (ej: mongodb://host1:port1,host2:port2,...), una cadena SRV solo necesita el nombre de host del servicio DNS.

Por ejemplo, una cadena SRV podría verse así:

mongodb+srv://usuario:[email protected]/

Aquí, mi-cluster.abcdef.mongodb.net es un nombre de host que se resuelve a través de DNS SRV. El registro SRV asociado a este nombre de host contiene la información de los hosts y puertos de los nodos del clúster. El cliente (como mongosh o un driver compatible) consulta este registro DNS, obtiene la lista de servidores disponibles y se conecta a ellos. Esto hace que la cadena sea más corta, más fácil de recordar y más resistente a cambios en la topología del clúster (como la adición o eliminación de nodos), ya que no es necesario actualizar la cadena de conexión cada vez que la topología cambia.

La cadena SRV es el formato predeterminado y recomendado para conectarse a despliegues en MongoDB Atlas.

¿Cómo puedo conectarme a una base de datos en MongoDB?
En la Interfaz web de MongoDB Atlas, busque el clúster al que conectarse y haga clic en el botón “Conectar“ junto a su nombre. En la siguiente pantalla, seleccione el método que está utilizando para conectarse a MongoDB y se le proporcionará una cadena de conexión adecuada para su clúster.

Conectándose a MongoDB Usando mongosh

mongosh es la herramienta de línea de comandos oficial y moderna para interactuar con MongoDB. Es muy útil para tareas administrativas, consultas y desarrollo. Para conectarte usando mongosh, primero necesitas tenerlo instalado y asegurarte de que tu instancia de MongoDB (local o remota) esté en ejecución y accesible.

Prerrequisitos

Antes de conectar, asegúrate de tener:

  • Una instancia de MongoDB en ejecución (local o remota).
  • mongosh instalado (se recomienda la versión 1.x o superior para compatibilidad con MongoDB 4.2+).
  • Los detalles de conexión: host, puerto, nombre de la base de datos, usuario y contraseña (si la autenticación está habilitada).

Conexión a una Instancia Local

Si MongoDB está corriendo en tu máquina local en el puerto por defecto (27017), simplemente abre tu terminal y ejecuta:

mongosh

Esto es equivalente a usar la cadena de conexión por defecto:

mongosh "mongodb://localhost:27017/"

Si MongoDB está corriendo en un puerto diferente en tu máquina local (ej: 28015), puedes especificarlo:

mongosh --port 28015

O utilizando la cadena de conexión:

mongosh "mongodb://localhost:28015/"

Conexión a una Instancia Remota

Para conectarte a un servidor MongoDB que no está en tu máquina local, necesitas especificar el host y el puerto. Por ejemplo, si tu servidor está en mongodb.example.com en el puerto 27017:

mongosh --host mongodb.example.com --port 27017

O utilizando la cadena de conexión:

mongosh "mongodb://mongodb.example.com:27017/"

Si el puerto es el por defecto (27017), puedes omitir --port 27017.

Conexión a un Despliegue en MongoDB Atlas

Conectarse a MongoDB Atlas es muy sencillo gracias a las cadenas de conexión SRV. Puedes obtener la cadena de conexión directamente desde la interfaz de usuario de Atlas.

Generalmente, la cadena de conexión Atlas se ve así:

mongodb+srv://<usuario>:<password>@<nombre-cluster>.<hash>.mongodb.net/<base-datos>?retryWrites=true&w=majority

Para conectarte usando mongosh, reemplaza <usuario>, <password>, <nombre-cluster>, <hash> y opcionalmente <base-datos> con tus detalles:

mongosh "mongodb+srv://usuario:[email protected]/miBaseDeDatos?retryWrites=true&w=majority"

Es más seguro omitir la contraseña en la línea de comandos para que mongosh te la pida interactivamente:

mongosh "mongodb+srv://[email protected]/miBaseDeDatos?retryWrites=true&w=majority"

Después de ejecutar este comando, mongosh te solicitará la contraseña.

Conexión a una Base de Datos Específica

Por defecto, al conectarte a una instancia de MongoDB, el shell se ubica en la base de datos test. Para conectarte directamente a una base de datos diferente (ej: miBaseDeDatos), puedes especificarla al final de la cadena de conexión, después del puerto o del nombre de host SRV, separada por una barra diagonal /:

mongosh "mongodb://localhost:27017/miBaseDeDatos"
mongosh "mongodb+srv://[email protected]/miBaseDeDatos?retryWrites=true&w=majority"

Una vez conectado, puedes verificar la base de datos actual con el comando db. Si necesitas cambiar de base de datos después de conectar, usa el comando use <nombre-base-datos>.

Conexión con Autenticación

Si tu instancia de MongoDB tiene la autenticación habilitada (¡lo cual es crucial en producción!), necesitarás proporcionar credenciales (usuario y contraseña) al conectar. Esto se hace típicamente a través de la cadena de conexión o mediante opciones de línea de comandos.

¿Cómo crear una base de datos en el comando Mongodb?
Para crear una nueva base de datos MongoDB con Mongo Shell, use el comando " use Database_Name ". Este comando crea una nueva base de datos si no existe; de lo contrario, devolverá la base de datos existente. La base de datos recién creada no aparecerá en la lista de bases de datos.

Usando la cadena de conexión (menos seguro si la contraseña queda expuesta):

mongosh "mongodb://usuario:password@host:port/baseDeDatos"

Usando opciones de línea de comandos (más seguro ya que la contraseña se solicita interactivamente):

mongosh "mongodb://host:port/baseDeDatos" --username usuario

Si necesitas autenticarte contra una base de datos diferente a la que te conectas por defecto (lo cual es común, por ejemplo, autenticarse contra la base de datos admin), puedes usar la opción --authenticationDatabase:

mongosh "mongodb://host:port/miBaseDeDatos" --username usuario --authenticationDatabase admin

Alternativamente, puedes especificar la base de datos de autenticación en la cadena de conexión usando la opción authSource:

mongosh "mongodb://usuario:password@host:port/miBaseDeDatos?authSource=admin"

Conexión a un Replica Set

Conectar a un Replica Set es importante para aplicaciones que requieren alta disponibilidad y redundancia. Hay dos formas principales:

1. Usando la Cadena de Conexión SRV (Recomendado)

Como se mencionó, las cadenas SRV están diseñadas para esto. Simplemente apunta al host SRV y el cliente descubrirá los miembros del set:

mongosh "mongodb+srv://usuario:[email protected]/?replicaSet=nombreDelSet"

Es importante incluir el parámetro replicaSet=<nombreDelSet> para que el cliente verifique que se está conectando al set correcto.

2. Listando Explícitamente los Miembros

Puedes listar los hosts y puertos de los miembros del set en la cadena de conexión tradicional mongodb://:

mongosh "mongodb://host1:port1,host2:port2,host3:port3/?replicaSet=nombreDelSet"

De nuevo, el parámetro replicaSet es crucial.

Conexión Segura con TLS/SSL

Para cifrar la comunicación entre el cliente y el servidor, se recomienda usar TLS/SSL. Con las cadenas de conexión SRV, TLS generalmente se habilita por defecto. Con las cadenas mongodb://, puedes habilitarlo de varias maneras:

  • Añadiendo la opción tls=true a la cadena de conexión:
mongosh "mongodb://host:port/?tls=true"
  • Usando la opción de línea de comandos --tls:
mongosh "mongodb://host:port/" --tls

Para configuraciones más avanzadas de TLS (ej: certificados CA, certificados de cliente), se pueden usar opciones adicionales en la cadena de conexión o en la línea de comandos.

Comparación de Cadenas de Conexión

Aquí hay una tabla que resume las diferencias clave entre los dos tipos de cadenas de conexión:

Característicamongodb://mongodb+srv://
Formato BásicoLista explícita de hosts: host1:port1,...Nombre de host SRV: hostname
Descubrimiento de TopologíaCliente se conecta a los hosts listados. No descubre automáticamente cambios en el Replica Set o Sharded Cluster.Cliente usa DNS SRV para descubrir hosts y puertos. Se adapta automáticamente a cambios en la topología.
Ideal paraInstancias standalone, entornos de desarrollo local, despliegues simples.Conjuntos de Réplicas, Sharded Clusters, MongoDB Atlas.
SimplicidadPuede ser larga si hay muchos miembros.Más corta y simple.
TLS/SSLDebe habilitarse explícitamente (?tls=true o --tls).Generalmente habilitado por defecto.

Consideraciones de Seguridad y Acceso

Conectarse exitosamente a MongoDB no solo depende de la cadena de conexión correcta, sino también de otros factores:

  • Reglas de Firewall: Asegúrate de que el firewall del servidor donde corre MongoDB y tu firewall local permitan el tráfico en el puerto de MongoDB (por defecto 27017, o el que uses). En entornos cloud como AWS, esto implica configurar los Security Groups correctamente.
  • Autenticación y Autorización: La autenticación debe estar habilitada en el servidor. El usuario que utilizas para conectar debe existir y tener los permisos necesarios (roles) sobre las bases de datos y colecciones con las que quieres interactuar.
  • Versión de MongoDB y mongosh: Asegúrate de que la versión de mongosh o del driver que utilizas sea compatible con la versión de tu servidor MongoDB.

Verificando la Conexión Actual

Una vez conectado en mongosh, puedes verificar la cadena de conexión que se utilizó para establecer la conexión actual ejecutando:

db.getMongo()

Esto te mostrará el objeto de conexión, incluyendo la URI utilizada.

Desconectándose de mongosh

Para salir del shell mongosh y cerrar la conexión, puedes usar varios comandos:

  • .exit
  • exit
  • exit()
  • quit
  • quit()

También puedes usar atajos de teclado como Ctrl + D o presionar Ctrl + C dos veces.

¿Cómo insertar datos en MongoDB Compass?
Haga clic en el menú desplegable Agregar datos y seleccione Insertar documento . Seleccione la vista adecuada según cómo desee insertar los documentos. Haga clic en el Corchetes { } para la vista JSON. Esta es la vista predeterminada.

Preguntas Frecuentes

¿Qué es una cadena de conexión SRV de MongoDB?

Es un tipo de cadena que comienza con mongodb+srv://. Utiliza registros DNS SRV para descubrir automáticamente los hosts y puertos de los nodos de un conjunto de réplicas o clúster fragmentado, simplificando la conexión y adaptándose a cambios en la topología. Es el formato estándar para MongoDB Atlas.

¿Cómo conectar MongoDB con la base de datos?

La conexión se establece desde un cliente (como mongosh o un driver de lenguaje de programación) hacia la instancia de MongoDB (el proceso mongod o mongos). Necesitas la dirección (host y puerto) de la instancia y, si está habilitada, las credenciales de autenticación. Las cadenas de conexión son la forma más común de pasar esta información al cliente.

¿Cómo me conecto a una base de datos específica en Mongosh?

Puedes especificar el nombre de la base de datos en la cadena de conexión, después del host/puerto o del nombre SRV, separado por una barra diagonal (ej: mongodb://host:port/miBaseDeDatos o mongodb+srv://.../miBaseDeDatos). Si no especificas una, te conectarás a la base de datos test por defecto. Dentro de mongosh, puedes cambiar de base de datos con el comando use <nombre-base-datos>.

¿Cómo conectarse a MongoDB localmente?

Si MongoDB está instalado y corriendo en tu máquina local en el puerto por defecto (27017), simplemente ejecuta mongosh en tu terminal. Si está en un puerto diferente, usa mongosh --port <puerto> o especifica el puerto en la cadena de conexión (ej: mongodb://localhost:<puerto>/).

Conclusión

Conectarse a MongoDB es un proceso flexible que se adapta a diversas configuraciones. Ya sea que estés trabajando con una instancia local, un servidor remoto, un Replica Set o un clúster en MongoDB Atlas, las cadenas de conexión y la herramienta mongosh te proporcionan las capacidades necesarias para establecer una conexión exitosa. Comprender los diferentes formatos de cadena de conexión, especialmente el formato SRV para despliegues modernos y en la nube, junto con las opciones de autenticación y seguridad, te permitirá conectar tus aplicaciones y herramientas a MongoDB de manera eficiente y segura.

Si quieres conocer otros artículos parecidos a Conectarse a MongoDB: Guía Completa puedes visitar la categoría Bases de datos.

Ivan

Soy un entusiasta de la tecnología con especialización en bases de datos, particularmente en MySQL. A través de mis tutoriales detallados, busco desmitificar los conceptos complejos y proporcionar soluciones prácticas a los desafíos cotidianos relacionados con la gestión de datos

Aprende mas sobre MySQL

Subir