使用Golang 驅動程式透過新URL 語法連接到MongoDB Atlas
使用Golang 驅動程式連接到MongoDB Atlas 時,可能會因為以下原因出現問題使用MongoDB 3.6 中引入的新URL 語法。本文探討了潛在的陷阱並提供了解決方案。
錯誤:未連線
程式碼嘗試使用 tls.Dial("tcp" 建立連線、addr.String()、tlsConfig) 函數。但是,它沒有指定超時,這可能會導致程式碼無限期阻塞。若要解決此問題,請使用dialInfo.Timeout = time.Duration(30).
Error: No Reachable Servers
使用mgo.DialWithInfo 函數時明確設定逾時使用SCRAM 機制,可能會發生錯誤,指示未找到可存取的伺服器。這是因為 globalsign/mgo 驅動程式目前不支援 SRV 連接字串 URI。或者,使用非 SRV 連接 URI 格式 (MongoDB v3.4) 或考慮使用 mongo-go-driver,它支援 SRV 連接 URI。
使用Mongo-go 的範例程式碼-driver
要示範使用mongo-go-driver 與SRV 連接URI 進行連接,請考慮以下程式碼snippet:
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) }
此範例與目前版本的mongo-go-driver v1.0.0 相容。
以上是如何使用具有新 URL 語法的 Golang 驅動程式成功連接到 MongoDB Atlas?的詳細內容。更多資訊請關注PHP中文網其他相關文章!