Guia de conexão
Visão geral
Neste guia, você aprenderá como se conectar a uma instância do MongoDB ou a uma implantação de conjunto de réplicas usando o driver Go.
Você pode usar o driver Go para se conectar a implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço fully managed para implantações do MongoDB na cloud
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
URI de conexão
Um URI de conexão, também conhecido como cadeia de conexão, informa ao driver como se conectar ao MongoDB e como se comportar enquanto estiver conectado.
Partes de um URI de conexão
O exemplo a seguir explica cada parte de um exemplo de URI de conexão:
Neste exemplo, usamos mongodb
para o protocolo, que especifica o formato de cadeias de conexão padrão. Você também pode usar o formato de conexão de seed list de DNS caso deseje mais flexibilidade de implantação e a capacidade de alterar os servidores em rotação sem reconfigurar os clientes.
A próxima parte da string de conexão contém seu nome de usuário do banco de dados e, se você estiver usando autenticação baseada em senha, a própria senha. Substitua o valor de user
pelo nome de usuário do banco de dados e pass
pela senha. Se você estiver usando um mecanismo de autenticação que não requer um nome de usuário e senha, omita esta parte do URI de conexão.
A próxima parte da cadeia de conexão especifica o nome do host ou o endereço IP e a porta da instância do MongoDB. No exemplo anterior, usamos sample.host
como nome de host e 27017
como porta. Substitua esses valores para apontar para a sua instância MongoDB.
A última parte da string de conexão especifica as opções de conexão e autenticação. No exemplo, definimos duas opções de conexão: maxPoolSize=20
w=majority
e. Para saber mais sobre as opções de conexão, consulte o guia Opções de conexão.
Exemplo de conexão
Para se conectar ao MongoDB, você deve criar um cliente. Um cliente gerencia conexões e executa comandos de banco de dados.
Dica
Reutilize seu cliente
Recomendamos que você reutilize seu cliente entre sessões e operações. Você pode utilizar a mesma Client
instância do para executar múltiplas tarefas, em vez de criar outra a cada vez. O Client
tipo de é seguro para uso concorrente por várias goroutines. Para saber mais sobre como os pool de conexões funcionam no driver, consulte a página de dúvidas frequentes.
Você pode criar um cliente que use sua cadeia de conexão e outras opções do cliente passando um objeto ClientOptions
para o método Connect()
.
Para especificar seu URI de conexão, passe-o para o método ApplyURI()
, que retorna uma nova instância do ClientOptions
. Para definir quaisquer outras opções, chame o método assistente relevante a partir do pacote options
.
Para saber mais sobre as opções de conexão, consulte a seção Opções de conexão. Para saber mais sobre como criar um cliente, consulte a documentação da API para Cliente e Connect().
Você pode definir a versão da Stable API como uma opção para evitar alterações interruptivas ao atualizar para uma nova versão do servidor. Para saber mais sobre o recurso Stable API, consulte a página 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/") } // Use the SetServerAPIOptions() method to set the Stable API version to 1 serverAPI := options.ServerAPI(options.ServerAPIVersion1) opts := options.Client().ApplyURI(uri).SetServerAPIOptions(serverAPI) // Create a new client and connect 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) } }() // Send 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!") }
Dica
Siga o Guia de início rápido para recuperar sua cadeia de conexão do Atlas.
Observação
Para saber mais sobre como se conectar ao Atlas sem servidor, consulte a página Limitações da instância sem servidor para identificar a versão mínima de driver necessária.
Outras maneiras de se conectar ao MongoDB
Se estiver se conectando a uma única instância ou conjunto de réplicas do servidor MongoDB que não esteja hospedado no Atlas, consulte as seções a seguir para saber como se conectar.
Conecte-se a um servidor MongoDB em sua máquina local
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 nossa Lista de verificação de segurança 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.
Se você quiser especificar um nome de host ou endereço IP diferente, consulte a entrada do Manual do servidor sobre strings de conexão.
Para testar se você pode se conectar ao servidor, substitua a cadeia de conexão pela do localhost no exemplo de código anterior.
Conectar a um conjunto 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 uma implantação 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 cadeia de conexão. No exemplo seguinte, 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, para garantir a conectividade quando o host especificado não estiver disponível, forneça a lista completa de hosts.
Conexão direta
Para forçar operações no host designado no URI de conexão, especifique a opção directConnection
. As conexões diretas exibem o seguinte comportamento:
Não oferecem suporte a strings SRV.
Elas falham nas gravações quando o host especificado não é o primary.
Eles exigem que você especifique uma preferência de leitura secundária quando o host especificado não é o nó primary.