Maison > développement back-end > Golang > Comment connecter MongoDB en Go en utilisant Atlas ?

Comment connecter MongoDB en Go en utilisant Atlas ?

WBOY
Libérer: 2024-02-09 20:36:20
avant
656 Les gens l'ont consulté

Comment connecter MongoDB en Go en utilisant Atlas ?

éditeur php Apple vous présentera comment utiliser Atlas pour vous connecter à MongoDB en langage Go. Atlas est le service d'hébergement cloud officiel de MongoDB, fournissant une solution de base de données distribuée fiable. Grâce à Atlas, vous pouvez facilement vous connecter à MongoDB en langage Go et effectuer des opérations de lecture et d'écriture de données. Ce qui suit vous présentera en détail les étapes spécifiques et la mise en œuvre du code, afin que vous puissiez mieux maîtriser les compétences d'utilisation d'Atlas pour vous connecter à MongoDB dans le langage Go. Apprenons avec l'éditeur !

Contenu de la question

J'ai un problème de délai d'expiration de sélection de serveur lors de la connexion à mongodb. Toute aide serait grandement appréciée.

selection error: server selection timeout, current topology: { type:
replicasetnoprimary, servers: [{ addr:
ac-pjyudwq-shard-00-01.1bnb2bm.mongodb.net:27017, type: unknown, last
error: dial tcp 3.6.207.111:27017: i/o timeout }, { addr:
ac-pjyudwq-shard-00-00.1bnb2bm.mongodb.net:27017, type: unknown, last
error: dial tcp 3.7.150.83:27017: i/o timeout }, { addr:
ac-pjyudwq-shard-00-02.1bnb2bm.mongodb.net:27017, type: unknown, last
error: dial tcp 3.7.137.42:27017: i/o timeout }, ] } exit status 1
Copier après la connexion

Le code que j'ai utilisé pour me connecter

const MONGOURL = "mongodb+srv://sai:[email protected]/?retryWrites=true&w=majority"

var collection *mongo.Collection

func init() {
    fmt.Println("in the init function") var databasename string = "GOAPI"
    var collectionname string = "Movies"
    client, err: = mongo.Connect(context.TODO(), options.Client().ApplyURI(MONGOURL)) if err != nil {
        fmt.Println("unable to get mongo connection ") log.Fatal(err)
    }
    collection = ( * mongo.Collection)(client.Database(databasename).Collection(collectionname)) fmt.Println("sucessfully collection is created ") doc: = Movie {
        Name: "rrr",
        Watched: false,
        Rating: 9,
        Id: "12121"
    }
    result, err: = collection.InsertOne(context.Background(), doc) if err != nil {
        log.Fatal("hey unable to insert one ", err)
    }
    fmt.Println("sucessfully added : ", result.InsertedID)

    // mongo.Connect()`your text`
}
Copier après la connexion

Solution de contournement

J'héberge mon cluster d'atlas de test sur AWS, j'aimerais donc avoir une gestion des informations d'identification similaire à celle du processus AWS. Depuis la page d'informations d'identification AWS :

La chaîne de fournisseurs par défaut recherche les informations d'identification dans l'ordre suivant :

  1. Variables d'environnement.
  2. Partagez le fichier d’informations d’identification.
  3. Si votre application s'exécute sur une instance Amazon EC2, le rôle iam pour Amazon EC2.

Je souhaite donc implémenter un environnement vérifiable pour une connexion simple pour mon exemple d'atlas. Le code ci-dessous suppose que les lignes suivantes ont été émises sur la ligne de commande

export mongo_pw='<您的atlas管理员用户密码>'

Ensuite, la procédure suivante vérifiera votre connexion

package main

import (
    "context"
    "fmt"
    "os"

    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

var username = "<username>"
var host1 = "<atlas host>"  // of the form foo.mongodb.net

func main() {

    ctx := context.TODO()

    pw, ok := os.LookupEnv("MONGO_PW")
    if !ok {
        fmt.Println("error: unable to find MONGO_PW in the environment")
        os.Exit(1)
    }
    mongoURI := fmt.Sprintf("mongodb+srv://%s:%s@%s", username, pw, host1)
    fmt.Println("connection string is:", mongoURI)

    // Set client options and connect
    clientOptions := options.Client().ApplyURI(mongoURI)
    client, err := mongo.Connect(ctx, clientOptions)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    err = client.Ping(ctx, nil)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    fmt.Println("Connected to MongoDB!")
}
Copier après la connexion

À partir de là, le reste du tutoriel lié à ma question d'origine se déroulera sans problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal