sql >> データベース >  >> NoSQL >> MongoDB

Golangmgoを使用したMongoDBAtlasへの接続:レプリカセットに到達可能なサーバーが永続的ではありません

    以下のMongoDBGoドライバーmgoコードスニペットを使用してMongoDBAtlasに接続すると、サンプルデータを使用して機能します。

    import (
        "gopkg.in/mgo.v2"
        "crypto/tls"
        "net"
    )
    
    tlsConfig := &tls.Config{}
    
    dialInfo := &mgo.DialInfo{
        Addrs: []string{"prefix1.mongodb.net:27017", 
                        "prefix2.mongodb.net:27017",
                        "prefix3.mongodb.net:27017"},
        Database: "authDatabaseName",
        Username: "user",
        Password: "pass",
    }
    dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {
        conn, err := tls.Dial("tcp", addr.String(), tlsConfig)
        return conn, err
    }
    session, err := mgo.DialWithInfo(dialInfo)
    

    シードとして指定できるレプリカセットメンバーは1つだけであることに注意してください。例:

    Addrs: []string{"prefix2.mongodb.net:27017"}
    

    参照:

    • tls.Dial()
    • DialInfo
    • DialWithInfo

    更新

    ParseURL()メソッドを使用して、MongoDBAtlasURI文字列を解析することもできます。ただし、現在、この方法はSSL(mgo.V2 PR:304)をサポートしていません

    回避策は、ssl=trueを取り出すことです。 解析前の行。

    //URI without ssl=true
    var mongoURI = "mongodb://username:[email protected],prefix2.mongodb.net,prefix3.mongodb.net/dbName?replicaSet=replName&authSource=admin"
    
    dialInfo, err := mgo.ParseURL(mongoURI)
    
    //Below part is similar to above. 
    tlsConfig := &tls.Config{}
    dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {
        conn, err := tls.Dial("tcp", addr.String(), tlsConfig)
        return conn, err
    }
    session, _ := mgo.DialWithInfo(dialInfo)
    



    1. 3週間でイベントソーシングとCQRSアーキテクチャに加えてHBaseをアップグレード

    2. MongoDBインスタンスへのデータのインポート

    3. DataFrameからRDD[(String、String)]への変換

    4. ホットフィックスを制御する際のMongoエラー