Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menyambung mongodb dalam go menggunakan atlas?

Bagaimana untuk menyambung mongodb dalam go menggunakan atlas?

WBOY
WBOYke hadapan
2024-02-09 20:36:20658semak imbas

Bagaimana untuk menyambung mongodb dalam go menggunakan atlas?

editor php Apple akan memperkenalkan anda cara menggunakan Atlas untuk menyambung ke MongoDB dalam bahasa Go. Atlas ialah perkhidmatan pengehosan awan rasmi MongoDB, menyediakan penyelesaian pangkalan data teragih yang boleh dipercayai. Melalui Atlas, anda boleh menyambung dengan mudah ke MongoDB dalam bahasa Go dan melaksanakan operasi membaca dan menulis data. Perkara berikut akan memperkenalkan anda kepada langkah khusus dan pelaksanaan kod secara terperinci, supaya anda boleh menguasai kemahiran menggunakan Atlas untuk menyambung ke MongoDB dalam bahasa Go dengan lebih baik. Mari belajar dengan editor!

Kandungan soalan

Saya menghadapi masalah tamat masa pemilihan pelayan semasa menyambung ke mongodb. Sebarang bantuan amatlah dihargai.

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

Kod yang saya gunakan untuk sambungkan

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

Penyelesaian

Saya menganjurkan kluster atlas ujian saya pada aws jadi saya ingin mempunyai pengurusan kelayakan yang serupa dengan proses aws. Dari halaman kelayakan aws:

Rangkaian pembekal lalai mencari bukti kelayakan dalam susunan berikut:

  1. Pembolehubah persekitaran.
  2. Kongsi fail kelayakan.
  3. Jika aplikasi anda berjalan pada contoh amazon ec2, peranan iam untuk amazon ec2.

Jadi saya ingin melaksanakan persekitaran yang boleh disahkan untuk log masuk mudah untuk contoh atlas saya. Kod di bawah menganggap bahawa baris berikut telah dikeluarkan pada baris arahan

export mongo_pw=''

Kemudian prosedur berikut akan mengesahkan sambungan anda

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

Dari sini selebihnya tutorial yang dipautkan dalam soalan asal saya akan mengalir dengan lancar.

Atas ialah kandungan terperinci Bagaimana untuk menyambung mongodb dalam go menggunakan atlas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam