【问题标题】:Mongodb unix socket connection with an official mongo-go-driver?Mongodb unix socket 与官方 mongo-go-driver 的连接?
【发布时间】:2019-09-23 15:11:32
【问题描述】:

找不到任何有关使用官方 mongo-go-driver 的 unix 域套接字连接支持的信息。

它是否得到官方实施和支持?

“mongodb:///tmp/mongodb-27017.sock”uri 不起作用。

【问题讨论】:

  • 您可能想尝试在客户端设置ClientOptions.Dialer,并从自定义拨号程序返回到域套接字的连接。

标签: mongodb sockets unix go


【解决方案1】:

它是否得到正式实施和支持?

使用官方的MongoDB Go driver 可以直接连接到一个URI 套接字。您只需要转义斜线即可。例如使用 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)
}

另外,mongo.Client 支持两种类型的连接字符串:

请注意,MongoDB 在设计上是一个分布式数据库(请参阅Replica Set)。套接字是一种基于文件的通信,旨在在单台机器内访问。除非您的用例和要求特别需要通过 Unix 套接字直接连接,否则我建议使用上述连接字符串格式之一。

【讨论】:

    猜你喜欢
    • 2019-12-05
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    相关资源
    最近更新 更多