Visão geral
Neste guia, você aprenderá a usar uma string de conexão e um objeto MongoClient
para se conectar a diferentes tipos de sistemas do MongoDB usando o driver Go.
Dica
Para ver como criar e configurar seu objeto MongoClient
, consulte a página Criar um cliente mongo.
Conectar-se ao Atlas
Para se conectar a uma MongoDB deployment no Atlas, inclua os seguintes elementos em sua connection string:
URL do seu cluster Atlas
Nome de usuário do MongoDB
Senha do MongoDB
Em seguida, passe sua connection string para o construtor MongoClient
.
Ao se conectar ao Atlas, recomendamos usar a opção de cliente Stable API para evitar alterações significativas quando o Atlas atualizar para uma nova versão do MongoDB Server. Para saber mais sobre o recurso de Stable API , consulte o guia de Stable API .
O código a seguir mostra como você pode criar um cliente que utiliza uma cadeia de conexão do Atlas e a versão da Stable API, conectar-se ao MongoDB e verificar se a conexão foi bem-sucedida:
// 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/pt-br/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
Novas instâncias sem servidor não podem mais ser criadas e, a partir de 5 2025 de maio, todas as instâncias sem servidor existentes foram migradas. A página Todos os clusters na UI do Atlas mostra para quais níveis suas instâncias foram migradas com base no uso. Consulte a página Gerenciar instâncias sem servidor para saber mais sobre como gerenciar manualmente as instâncias sem servidor existentes.
Conecte-se a sistemas locais
Se você precisa executar um servidor MongoDB em sua máquina local para fins de desenvolvimento, complete as seguintes etapas:
Baixe a versão Comunidade ou Enterprise do MongoDB Server.
Instale e configure o servidor MongoDB.
Inicie o servidor.
Importante
Sempre proteja seu servidor do MongoDB contra ataques maliciosos. Consulte a Lista de verificação de segurança no manual do servidor para obter uma lista de recomendações de segurança.
Depois de iniciar com êxito o servidor MongoDB, especifique a connection string no código de conexão do driver.
Se o servidor MongoDB estiver sendo executado localmente, você poderá usar a connection string "mongodb://localhost:<port>"
, em que <port>
é o número da porta que você configurou no servidor para escutar as conexões de entrada.
Para obter mais informações sobre como especificar um nome de host ou endereço IP diferente, consulte Connection strings no manual do servidor.
Para testar se você pode se conectar ao servidor, substitua a string de conexão pela do localhost no exemplo de código anterior.
Conecte-se a conjuntos de réplicas
Uma implantação do conjunto de réplicas MongoDB é um grupo de instâncias conectadas que armazenam o mesmo conjunto de dados. Esta configuração fornece redundância de dados e alta disponibilidade de dados.
Para conectar a um sistema do conjunto de réplicas, especifique o nome do host e os números de porta de cada instância, separados por vírgulas, e o nome do conjunto de réplicas como o valor do parâmetro replicaSet
na string de conexão. No exemplo de string de conexão a seguir, os nomes de host são host1
, host2
e host3
, e os números de porta são todos 27017
. O nome do conjunto de réplicas é myRS
.
mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS
Ao se conectar a um conjunto de réplicas, o driver realiza as seguintes ações por padrão:
Descobre todos os membros do conjunto de réplicas quando recebe o endereço de qualquer membro.
Despacha operações para o membro apropriado, como instruções para gravar no primário.
Dica
Você pode especificar apenas um host para se conectar a um conjunto de réplicas. No entanto, você deve fornecer a lista completa de hosts para garantir a conectividade quando o host especificado não estiver disponível.
Para saber mais sobre conjuntos de réplicas, consulte a entrada Replicação no manual do servidor.
Conexão direta
Para forçar operações no host designado na string de conexão, especifique a opção directConnection
. As conexões diretas exibem o seguinte comportamento:
Não oferecem suporte a strings SRV.
Falham nas gravações quando o host especificado não é o primário.
Elas exigem que você especifique um nó secundário com preferência de leitura secundária quando o host especificado não é o nó primary.
Observação
Conjunto de réplicas no Docker
Quando um conjunto de réplicas é executado no Docker, ele pode expor apenas um endpoint MongoDB . Nesse caso, o conjunto de réplicas não é detectável. Especificar directConnection=false
em seu URI de conexão ou deixar essa opção sem definir pode impedir que seu aplicação se conecte a ele.
Em um ambiente de teste ou desenvolvimento, é possível conectar-se ao conjunto de réplicas especificando directConnection=true
. Em um ambiente de produção, recomendamos configurar o cluster para que cada instância do MongoDB seja acessível fora da rede virtual do Docker.
Descoberta de serviço DNS
Para usar a descoberta de serviços DNS para procurar o registro DNS SRV do serviço ao qual você está se conectando, especifique o formato de conexão SRV em sua string de conexão. Se você especificar este formato, o driver Go reanalisa automaticamente novos hosts. Seu sistema pode adicionar hosts à topologia sem exigir alterações na configuração do cliente .
O código a seguir mostra uma string de conexão que usa o formato de conexão SRV:
uri := "mongodb+srv://<hostname>/"
Para saber mais sobre o formato de conexão SRV, consulte a entrada Formato de conexão SRV no manual do MongoDB Server.
Documentação da API
Para saber mais sobre como conectar a diferentes instâncias MongoDB com um MongoClient
, consulte a seguinte documentação da API: