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 utilizando el controlador de Go.
Tip
Para ver cómo crear y configurar tu objeto MongoClient, consulta el Crea un cliente Mongo página.
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, pasa tu cadena de conexión al constructor de 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 de mayo 5 2025, todas las instancias sin servidor existentes han sido migradas. El 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.
Conectar 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 puedes conectarte a tu servidor, reemplaza la cadena de conexión con tu cadena de conexión localhost en el anterior ejemplo de código.
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 conectar a una implementación de set de réplicas, especifica los nombres de host y los números de puerto de cada instancia, separados por comas, y el nombre del set de réplicas como el valor del parámetro replicaSet en la cadena de conexión. En la siguiente cadena de conexión de ejemplo, los nombres de host son host1, host2 y host3, y todos los números de puerto son 27017. El nombre del set 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 nodos del conjunto de réplicas cuando se le proporciona la dirección de cualquiera de los nodos.
Envía las operaciones al nodo adecuado, como las instrucciones para guardar contra el primario.
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.
Falla en los guardados cuando el host especificado no es el primario.
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 para buscar el registro SRV del servicio al que te estás conectando, especifica el formato de conexión SRV en tu cadena de conexión. Si especificas este formato, el controlador de Go vuelve a buscar automáticamente nuevos hosts. Su implementación puede añadir hosts a su topología sin requerir cambios en 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: