douliao2493
douliao2493
2019-09-22 19:15

MongoDB unix套接字与正式的mongo-go-driver连接?

已采纳

Can't find any information about unix domain sockets connection support with official mongo-go-driver.

Is it implemented and supported officially?

The "mongodb:///tmp/mongodb-27017.sock" uri does not work.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • douzhong6480 douzhong6480 2年前

    Is it implemented and supported officially?

    Using the official MongoDB Go driver you can connect directly to a URI socket. You just need to escape the slash(es). For example using v1.1+:

    mongoURI := "mongodb://%2Ftmp%2Fmongodb-27017.sock"
    
    client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))
    if err != nil {
        panic(err)
    }
    ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
    defer cancel()
    err = client.Connect(ctx)
    if err != nil {
        panic(err)
    }
    

    In addition, mongo.Client supports two types of connection string, either:

    Please note that MongoDB, by design, is a distributed database (see Replica Set). Socket is a file based communication and intended for access within a single machine. Unless your use case and requirements specifically require to connect directly via Unix sockets, I'd recommend to use one of the connection string formats above instead.

    点赞 评论 复制链接分享