Overview
Para conectarte a una implementación de MongoDB, necesitas dos cosas:
URI de conexión, también conocida como cadena de conexión, que le indica al controlador de Node.js a qué implementación de MongoDB debe conectarse.
Objeto MongoClient, que establece la conexión y lleva a cabo operaciones en la implementación de MongoDB.
También puedes utilizar MongoClientOptions para personalizar la forma en que se comporta el controlador Node.js mientras está conectado a MongoDB.
Esta guía muestra cómo crear una cadena de conexión y usar un objeto MongoClient para realizar la conexión a MongoDB.
URI de conexión
Una cadena de conexión estándar incluye los siguientes componentes:
Componente | Descripción |
|---|---|
| Requerido. Un prefijo que identifica esto como un string en el formato de conexión estándar. |
| Opcional. Credenciales de autenticación. Si las incluye, el cliente autentica al usuario con la base de datos especificada en |
| Requerido. El host y el número de puerto opcional donde se ejecuta MongoDB. Si no incluyes el número de puerto, el controlador utiliza el puerto por defecto, |
| Opcional. La base de datos de autenticación que se debe usar si la cadena de conexión incluye las credenciales de autenticación |
| Opcional. Un string del query que especifica opciones específicas de conexión como pares |
Para obtener más información sobre cómo crear una cadena de conexión, consulte Cadenas de conexión en la documentación del servidor MongoDB.
Ejemplo de Conexión de Atlas
Debe crearse un cliente para conectarse a una implementación de MongoDB en Atlas. Para crear un cliente, construya una instancia de MongoClient, pasando su URI y un objeto MongoClientOptions.
Tip
Reutilizar el cliente
Dado que cada MongoClient representa un grupo de conexiones a la base de datos, la mayoría de las aplicaciones solo requieren una única instancia de MongoClient, incluso en múltiples solicitudes. Para aprender más sobre cómo funcionan los pools de conexiones en el controlador, consultar la página Pools de conexiones.
Se debe usar la opción serverApi en el objeto MongoClientOptions para habilitar la característica de Stable API, que obliga al servidor a ejecutar operaciones con un comportamiento compatible con la versión de API especificada.
El siguiente código muestra cómo se puede especificar la cadena de conexión y la opción de cliente de la Stable API al conectarse a una implementación de MongoDB en Atlas y verificar que la conexión sea exitosa:
const { MongoClient, ServerApiVersion } = require("mongodb"); // Replace the placeholder with your Atlas connection string const uri = "<connection string>"; // Create a MongoClient with a MongoClientOptions object to set the Stable API version const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, } } ); async function run() { try { // Connect the client to the server (optional starting in v4.7) await client.connect(); // Send a ping to confirm a successful connection await client.db("admin").command({ ping: 1 }); console.log("Pinged your deployment. You successfully connected to MongoDB!"); } finally { // Ensures that the client will close when you finish/error await client.close(); } } run().catch(console.dir);
Nota
El controlador de Nodo.js llama automáticamente al método MongoClient.connect() cuando utiliza el cliente para realizar operaciones CRUD en la implementación de MongoDB. Llamar al método MongoClient.connect() explícitamente si se desea verificar que la conexión sea exitosa.
Tip
Gestión explícita de recursos
El controlador de Nodo.js admite de forma nativa la gestión explícita de recursos para MongoClient, ClientSession, ChangeStreams y cursores. Esta característica es experimental y está sujeta a cambios. Para aprender a utilizar la gestión explícita de recursos, consulta las Notas de versión v6.9.
Para aprender más sobre la característica Stable API, consulta la página de Stable API.
Evitar que una operación lenta retrase otras operaciones
Cuando se utiliza la misma instancia MongoClient para ejecutar varias operaciones de MongoDB simultáneamente, una operación lenta puede causar retrasos en otras operaciones. Las operaciones lentas mantienen ocupada una conexión a MongoDB, lo que puede causar que otras operaciones tengan que esperar hasta que otra conexión esté disponible.
Si sospecha que las operaciones lentas de MongoDB están causando retrasos, puede verificar el rendimiento de todas las operaciones en curso utilizando los siguientes métodos:
Activa el perfilador de base de datos en la implementación. Para aprender más, consulta perfilador de base de datos en el manual del servidor.
Ejecuta el comando
db.currentOp()de MongoDB Shell. Para aprender más, consulta la documentación db.currentOp() en el manual del servidor.Habilita la supervisión del pool de conexiones. Para obtener más información, consulta Eventos del pool de conexiones.
Después de determinar qué operaciones están causando retrasos, intente mejorar el rendimiento de dichas operaciones. Lea la Guía de mejores prácticas para el rendimiento de MongoDB para posibles soluciones.
Si implementas las mejores prácticas de rendimiento pero aún experimentas retrasos, puedes modificar la configuración de conexión para aumentar el tamaño del pool de conexiones. Un pool de conexiones es el conjunto de conexiones al servidor que el controlador mantiene en todo momento.
Para especificar el tamaño máximo de un pool de conexiones, se puede establecer la opción maxPoolSize en las opciones de conexión para la instancia de MongoClient. El valor por defecto de maxPoolSize es 100. Si el número de conexiones en uso a un servidor alcanza maxPoolSize, la siguiente operación enviada al servidor se pausa hasta que una conexión al driver esté disponible. El siguiente código establece maxPoolSize en 150 al crear un nuevo MongoClient:
const client = new MongoClient(uri, { maxPoolSize: 150 });
Tip
Para obtener más información sobre el agrupamiento de conexiones, consulta la sección Descripción general de pool de conexiones en la página Pool de conexiones.
Documentación de la API
Para obtener más información sobre cómo crear un objeto MongoClient con el Node.js Driver, consulta la siguiente documentación de la API: