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

Wie verbinde ich Mongodb mit Atlas in Go?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBnach vorne
2024-02-09 20:36:20702Durchsuche

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

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`
}

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=''

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!")
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen