Overview
En esta guía, puedes aprender cómo utilizar una cadena de conexión y un 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 conectarte a una implementación de MongoDB en Atlas, incluye los siguientes elementos en tu cadena de conexión:
URL de tu clúster de Atlas
Nombre de usuario de MongoDB
Contraseña de MongoDB
Luego, pase la cadena de conexión al constructor MongoClient.
Cuando te conectes a Atlas, recomendamos utilizar la opción del cliente Stable API para evitar cambios disruptivos cuando Atlas se actualice a una nueva versión de MongoDB Server. Para obtener más información sobre la funcionalidad API estable, consulta la guía sobre la Stable API.
El siguiente código muestra cómo puede crear un cliente que utiliza una cadena de conexión Atlas y la versión de Stable API, conectarse a MongoDB y verificar que la conexión es 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 clusters en la Interfaz de Usuario de Atlas muestra a qué niveles se migran tus instancias según el uso.
Conectarse a implementaciones locales
Si necesitas ejecutar un servidor MongoDB en tu máquina local para fines de desarrollo, sigue los siguientes pasos:
Instale y configure MongoDB Server.
Inicia el servidor.
Importante
Asegúrate siempre de proteger tu servidor MongoDB contra ataques maliciosos. Consulta la Lista de verificación de seguridad en el manual del servidor para ver 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.
Conectar a sets de réplicas
Una implementación de set de réplicas de MongoDB es un grupo de instancias conectadas que almacenan el mismo conjunto de datos. Esta configuración proporciona redundancia de datos 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
Cuando se conecta a un set de réplicas, el driver realiza las siguientes acciones por defecto:
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
Puedes especificar solo un host para conectarte a un set 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 sets de réplicas, consulte la entrada Replicación en el manual del Servidor.
directConnection
Para forzar operaciones en el host designado en la cadena de conexión, especifica 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.
Se requiere que indiques un nodo secundario con preferencia de lectura secundaria cuando el host especificado no es el nodo primario.
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 la API: