sql >> Database >  >> NoSQL >> MongoDB

Hoe een nieuwe URL van mongodb 3.6 te gebruiken om verbinding te maken vanuit golang

Ik kon alleen zien dat de code begon, daarna niets

Zoals je hebt ontdekt, komt dit omdat DialInfo standaard een time-out van nul heeft. De oproep wordt voor altijd geblokkeerd in afwachting van het tot stand brengen van een verbinding. U kunt ook een time-out specificeren met:

dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)

Nu krijg ik geen bereikbare servers

Dit komt omdat globalsign/mgo momenteel nog geen SRV-verbindingstekenreeks-URI ondersteunt. Zie problemen 112. U kunt de niet-srv-verbinding URI-indeling (MongoDB v3.4) gebruiken, zie een gerelateerde vraag StackOverflow:41173720.

U kunt in plaats daarvan mongo-go-driver gebruiken als u verbinding wilt maken via de SRV-verbindings-URI, bijvoorbeeld:

mongoURI := "mongodb+srv://admin:[email protected]/dbname?ssl=true&retryWrites=true"

client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))
if err != nil {
    log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
err = client.Connect(ctx)
defer client.Disconnect(ctx)

if err != nil {
    log.Fatal(err)
}
database := client.Database("go")
collection := database.Collection("atlas")

Het bovenstaande voorbeeld is compatibel met de huidige versie v1.0.0




  1. Verschil tussen id- en _id-velden in MongoDB

  2. MongoDB - Meerdere $ of bewerkingen

  3. Hoe weet ik of sidekiq is verbonden met de redis-server?

  4. DataFrame naar RDD [(String, String)] conversie