Overview
En esta guía, puede aprender a utilizar una cadena de conexión y una MongoClient
objeto para conectarse a diferentes tipos de implementaciones de MongoDB mediante el controlador Go.
Tip
Para ver cómo crear y configurar su objeto MongoClient, consulte la Crear una página de cliente Mongo.
Conectar a Atlas
Para conectarse a una implementación de MongoDB en Atlas, incluya los siguientes elementos en su cadena de conexión:
URL de su clúster Atlas
Nombre de usuario de MongoDB
Contraseña de MongoDB
Luego, pase la cadena de conexión al constructor MongoClient.
Al conectarse a Atlas, recomendamos usar la opción de cliente API estable para evitar cambios importantes cuando Atlas se actualice a una nueva versión de MongoDB Server. Para obtener más información sobre la función API estable, consulte la guía de API estable.
El siguiente código muestra cómo crear un cliente que use una cadena de conexión Atlas y la versión API estable, conectarse a MongoDB y verificar que la conexión sea exitosa:
// Connects to MongoDB and sets a Stable API version package main import ( "context" "fmt" "log" "os" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" ) func main() { var uri string if uri = os.Getenv("MONGODB_URI"); uri == "" { log.Fatal("You must set your 'MONGODB_URI' environment variable. See\n\t https://mongodb.com/es/docs/drivers/go/current/usage-examples/") } // Uses the SetServerAPIOptions() method to set the Stable API version to 1 serverAPI := options.ServerAPI(options.ServerAPIVersion1) // Defines the options for the MongoDB client opts := options.Client().ApplyURI(uri).SetServerAPIOptions(serverAPI) // Creates a new client and connects to the server client, err := mongo.Connect(opts) if err != nil { panic(err) } defer func() { if err = client.Disconnect(context.TODO()); err != nil { panic(err) } }() // Sends a ping to confirm a successful connection var result bson.M if err := client.Database("admin").RunCommand(context.TODO(), bson.D{{"ping", 1}}).Decode(&result); err != nil { panic(err) } fmt.Println("Pinged your deployment. You successfully connected to MongoDB!") }
Importante
Ya no se pueden crear nuevas instancias sin servidor y, a partir del 5 2025 de mayo, se han migrado todas las instancias sin servidor existentes. La página Todos los clústeres en la interfaz de usuario de Atlas muestra a qué niveles se migran sus instancias en función del uso.
Conectarse a implementaciones locales
Si debe ejecutar un servidor MongoDB en su máquina local para fines de desarrollo, complete los siguientes pasos:
Instale y configure MongoDB Server.
Inicia el servidor.
Importante
Proteja siempre su servidor MongoDB contra ataques maliciosos. Consulte la Lista de verificación de seguridad en el manual del servidor para obtener una lista de recomendaciones de seguridad.
Después de iniciar MongoDB Server correctamente, se debe especificar la cadena de conexión en el código de conexión del driver.
Si MongoDB Server se está ejecutando localmente, se puede utilizar la cadena de conexión "mongodb://localhost:<port>" en que <port> es el número de puerto que se configuró para que el servidor escuche las conexiones entrantes.
Para obtener más información sobre cómo especificar un nombre de host o una dirección IP diferente, consulte Cadenas de conexión en el manual del servidor.
Para probar si puede conectarse a su servidor, reemplace la cadena de conexión con la cadena de conexión de su host local en el ejemplo de código anterior.
Conectarse a conjuntos de réplicas
Una implementación de un conjunto de réplicas de MongoDB es un grupo de instancias conectadas que almacenan el mismo conjunto de datos. Esta configuración proporciona redundancia y alta disponibilidad de datos.
Para conectarse a una implementación de conjunto de réplicas, especifique el nombre de host y los números de puerto de cada instancia, separados por comas, y el nombre del conjunto de réplicas como valor del parámetro replicaSet en la cadena de conexión. En el siguiente ejemplo de cadena de conexión, los nombres de host son host1, host2 y host3, y los números de puerto son 27017. El nombre del conjunto de réplicas es myRS.
mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS
Al conectarse a un conjunto de réplicas, el controlador realiza las siguientes acciones de forma predeterminada:
Descubre todos los miembros del conjunto de réplicas cuando se le proporciona la dirección de cualquiera de los miembros.
Envía operaciones al miembro apropiado, como instrucciones para escribir contra el principal.
Tip
Puede especificar solo un host para conectarse a un conjunto de réplicas. Sin embargo, debe proporcionar la lista completa de hosts para garantizar la conectividad cuando el host especificado no esté disponible.
Para obtener más información sobre los conjuntos de réplicas, consulte la entrada Replicación en el manual del Servidor.
Conexión directa
Para forzar operaciones en el host designado en la cadena de conexión, especifique la opción directConnection. Las conexiones directas presentan el siguiente comportamiento:
No admiten cadenas SRV.
Fallan en las escrituras cuando el host especificado no es el principal.
Requieren que usted especifique un nodo secundario con preferencia de lectura secundaria cuando el host especificado no es el nodo principal.
Nota
Set de réplicas en Docker
Cuando un set de réplicas se ejecuta en Docker, se podría exponer solo un punto final de MongoDB. En este caso, el set de réplicas no se puede detectar. Si se especifica directConnection=false en la URI de conexión, o se deja esta opción sin configurar, puedes evitar que tu aplicación se conecte a ella.
En un entorno de prueba o desarrollo, se puede conectar al set de réplicas especificando directConnection=true. En un entorno de producción, se recomienda configurar el clúster para que cada instancia de MongoDB sea accesible fuera de la red virtual de Docker.
Detección de servicios DNS
Para usar la detección de servicios DNS y buscar el registro SRV DNS del servicio al que se conecta, especifique el formato de conexión SRV en la cadena de conexión. Si especifica este formato, el controlador Go volverá a escanear automáticamente en busca de nuevos hosts. Su implementación puede agregar hosts a su topología sin necesidad de modificar la configuración del cliente.
El siguiente código muestra una cadena de conexión que utiliza el formato de conexión SRV:
uri := "mongodb+srv://<hostname>/"
Para aprender más sobre el formato de conexión SRV, consulta la entrada Formato de conexión SRV en el manual de MongoDB Server.
Documentación de la API
Para obtener más información sobre cómo conectarse a diferentes instancias de MongoDB con un MongoClient, consulte la siguiente documentación de API: