Heim > Backend-Entwicklung > Golang > Wie verbinde ich Mongodb mit Atlas in Go?

Wie verbinde ich Mongodb mit Atlas in Go?

WBOY
Freigeben: 2024-02-09 20:36:20
nach vorne
677 Leute haben es durchsucht

Wie verbinde ich Mongodb mit Atlas in Go?

php-Editor Apple stellt Ihnen vor, wie Sie Atlas verwenden, um eine Verbindung zu MongoDB in der Go-Sprache herzustellen. Atlas ist der offizielle Cloud-Hosting-Dienst von MongoDB und bietet eine zuverlässige verteilte Datenbanklösung. Über Atlas können Sie problemlos eine Verbindung zu MongoDB in der Go-Sprache herstellen und Datenlese- und -schreibvorgänge durchführen. Im Folgenden werden Ihnen die spezifischen Schritte und die Code-Implementierung im Detail vorgestellt, damit Sie die Fähigkeiten zur Verwendung von Atlas für die Verbindung mit MongoDB in der Go-Sprache besser beherrschen können. Lernen wir mit dem Herausgeber!

Frageninhalt

Ich habe ein Problem mit der Zeitüberschreitung bei der Serverauswahl, wenn ich mich mit Mongodb verbinde. Jede Hilfe wäre sehr dankbar.

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
Nach dem Login kopieren

Der Code, mit dem ich eine Verbindung hergestellt habe

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`
}
Nach dem Login kopieren

Workaround

Ich hoste meinen Testatlas-Cluster auf aws, daher hätte ich gerne eine ähnliche Anmeldeinformationsverwaltung wie der aws-Prozess. Von der AWS-Anmeldeinformationsseite:

Die Standardanbieterkette sucht in der folgenden Reihenfolge nach Anmeldeinformationen:

  1. Umgebungsvariablen.
  2. Anmeldeinformationsdatei teilen.
  3. Wenn Ihre Anwendung auf einer Amazon ec2-Instanz ausgeführt wird, ist die iam-Rolle für Amazon ec2.

Deshalb möchte ich für mein Atlas-Beispiel eine überprüfbare Umgebung für die einfache Anmeldung implementieren. Der folgende Code geht davon aus, dass die folgenden Zeilen in der Befehlszeile ausgegeben wurden

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

Dann überprüft das folgende Verfahren Ihre Verbindung

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!")
}
Nach dem Login kopieren

Von hier aus wird der Rest des in meiner ursprünglichen Frage verlinkten Tutorials reibungslos ablaufen.

Das obige ist der detaillierte Inhalt vonWie verbinde ich Mongodb mit Atlas in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage