对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

指定连接选项

本页介绍了 Go 驱动程序中可用的连接选项,并说明了如何将这些选项应用于 MongoDB 连接。

以下部分介绍如何使用连接字符串或 ClientOptions 结构指定连接选项。

您可以通过将 ClientOptions 结构体传递给 Connect() 方法,在连接字符串中指定连接选项。在连接字符串中,您可以将连接选项作为 <name>=<value> 对包含在 string 中。在以下示例中,连接字符串包含值为 60000 毫秒的 connectTimeoutMS 选项和值为 true 的 tls 选项:

const uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

您还可以将连接选项链接到 ClientOptions 结构以配置连接设置。以这种方式配置连接可以更轻松地在运行时更改设置,帮助您在编译期间捕获错误,并且提供比连接字符串更多的配置选项。

以下代码示例将 Timeout 选项设置为 60 秒,并通过将空 tls.Config 结构传递给 SetTLSConfig() 方法来启用 TLS:

opts := options.Client().
SetConnectTimeout(60 * time.Second).
SetTLSConfig(&tls.Config{})
client, _ := mongo.Connect(opts)

指定是否强制将所有操作分派到托管。如果指定此选项,驱动程序将不接受 SRV 连接格式。必须使用标准连接 URI 格式。要了解有关 SRV 连接和标准连接格式的更多信息,请参阅 MongoDB Server 手册中的连接字符串指南。

如果指定多个托管名,则必须将此属性设立为 false。

数据类型: bool

默认值: false

示例:

const uri = "mongodb://localhost:27017/?directConnection=true"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

要连接的副本集的名称。

数据类型: string

默认值: nil

示例:

const uri = "mongodb://localhost:27017/?replicaSet=yourReplicaSet"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

指定是否需要 TLS 来连接到服务器。如果使用 "mongodb+srv" 模式或指定其他 TLS 选项,则此选项默认为 true。否则,默认为 false。

数据类型: bool

默认值: nil

示例:

const uri = "mongodb://localhost:27017/?tls=true"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

tlsDisableCertificateRevocationCheck 选项禁用 TLS 连接的证书吊销检查。当您将此选项设置为 true 时,驱动程序不会验证证书的吊销状态,但仍会验证证书链和主机名。即使将其设置为 false,设置此选项也会隐式启用 TLS。请勿将此选项与 tlsInsecure 或 tlsDisableOCSPEndpointCheck 结合使用。

数据类型: bool

默认值: false

示例:

uri := os.Getenv("MONGODB_URI")
if uri == "" {
log.Fatal("Set your 'MONGODB_URI' environment variable")
}
// Use an ampersand instead of a question mark if the connection string
// already contains query options.
separator := "?"
if strings.Contains(uri, "?") {
separator = "&"
}
uriOptions := options.Client().
ApplyURI(uri + separator + "tlsDisableCertificateRevocationCheck=true")

有关 TLS 选项的更多信息,请参阅在连接上启用 TLS指南。

驱动程序在超时前尝试与服务器建立单个 TCP 套接字连接的时间长度。

数据类型:非负 int

默认值: 30000 毫秒

示例:

const uri = "mongodb://localhost:27017/?connectTimeoutMS=60000"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

timeoutMS 选项指定在客户端上运行的单个操作在返回错误之前可以执行的时间量。

数据类型:非负 int

默认值: nil

示例:

const uri = "mongodb://localhost:27017/?timeoutMS=30000"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

首选压缩类型(按顺序),用于发送到服务器或从服务器接收的传输协议消息。您可以将“snappy”、“zlib”和“zstd”作为可选的构建时依赖项启用。驱动程序使用服务器支持的第一种压缩类型。

数据类型: string (值以逗号分隔)

默认值: nil

示例:

const uri = "mongodb://localhost:27017/?compressors=zlib,snappy"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

zlibCompressionLevel 选项设置 zlib 使用的压缩级别。如果未通过 ApplyURI 或 SetCompressors 将 zlib 指定为压缩器,则会忽略此选项。此选项接受 -1 和 9 之间的整数值:

  • -1: (默认).zlib 使用其默认压缩级别(通常为 6)。

  • 0: 无压缩。

  • 1: 速度最快,但压缩最低。

  • 9: 压缩最佳,但速度最慢。

数据类型: int

默认值: -1

示例:

const uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=6"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

zstdCompressionLevel 选项设置 zstd 使用的压缩级别。如果未通过 ApplyURI 或 SetCompressors 将 zstd 指定为压缩程序,则会忽略此选项。此选项接受 1 到 20 之间的整数值:

  • 1: 速度最快,但压缩最低。

  • 20: 压缩最佳,但速度最慢。

数据类型: int

默认值: 6

示例:

const uri = "mongodb://localhost:27017/?compressors=zstd&zstdCompressionLevel=6"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

有关压缩的更多信息,请参阅压缩网络流量指南。

驱动程序可在其连接池中创建的客户端或连接的最大数量。此计数包括正在使用的连接。

数据类型:非负 int

默认值: 100

示例:

const uri = "mongodb://localhost:27017/?maxPoolSize=150"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

即使没有发生任何操作,驱动程序在连接池中创建并保持的连接数。此计数包括正在使用的连接。

数据类型:非负 int

默认值: 0

示例:

const uri = "mongodb://localhost:27017/?minPoolSize=3"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

在驱动程序关闭连接之前,该连接可处于空闲状态的时间长度。

数据类型:非负 int

默认值: 0

示例:

const uri = "mongodb://localhost:27017/?maxIdleTimeMS=8000"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

maxConnecting 选项设置连接池可以同时建立的最大连接数。

数据类型:非负 int

默认值: 2

示例:

const uri = "mongodb://localhost:27017/?maxConnecting=3"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

要学习有关连接池的更多信息,请参阅连接池指南。

写关注(write concern)的 w 组件,请求确认写入操作已传播到指定数量的MongoDB实例。默认值为 "majority" 或 1,具体取决于仲裁节点和投票节点的数量。要学习;了解有关 w 选项的更多信息,请参阅MongoDB Server手册中的写关注。

数据类型: int or string

默认值: 1 or "majority"

示例:

const uri = "mongodb://localhost:27017/?w=2"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

客户端的读关注(read concern)级别。有关更多信息,请参阅MongoDB Server手册中的读关注(read concern)参考。

数据类型: string

默认值: local

示例:

const uri = "mongodb://localhost:27017/?readConcernLevel=majority"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

客户端的默认读取偏好(read preference)设置。有关详细信息,请参阅 MongoDB Server 手册中的 读取偏好(read preference)。

数据类型: string

默认值: primary

示例:

const uri = "mongodb://localhost:27017/?readPreference=primaryPreferred"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

驱动程序用于向 MongoDB Server 进行身份验证的机制。如果您未指定身份验证机制,驱动程序将使用 SCRAM-SHA-1 或 SCRAM-SHA-256,具体取决于服务器版本。

要了解有关可用身份验证机制的更多信息,请参阅《身份验证机制》指南。

数据类型: string

默认值:空(无身份验证),或在启用身份验证后为 SCRAM-SHA-256

示例:

const uri = "mongodb://user:password@localhost:27017/?authMechanism=PLAIN&authSource=admin"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

驱动程序在超时之前尝试选择服务器的时间长度。

数据类型:非负 int

默认值: 30000 毫秒

示例:

const uri = "mongodb://localhost:27017/?serverSelectionTimeoutMS=40000"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

服务器资格的延迟窗口。如果服务器的往返时间长于最快服务器的往返时间加上此值,则该服务器没有资格被选中。

数据类型:非负 int

默认值: 15 毫秒

示例:

const uri = "mongodb://localhost:27017/?localThresholdMS=20000"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

允许重试读取。

数据类型: bool

默认值: true

示例:

const uri = "mongodb://localhost:27017/?retryReads=false"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

启用可重试写入。

数据类型: bool

默认值: true

示例:

const uri = "mongodb://localhost:27017/?retryWrites=false"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

maxAdaptiveRetries 选项设置了驱动程序在遇到服务器端过载错误时应重试操作的最大次数。

数据类型:非负 int

默认值: 2

示例:

const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

驱动程序在连接握手过程中作为客户端元数据的一部分传递给服务器的应用名称。服务器建立连接后,会将此值打印到 MongoDB 日志中。该值还会记录在慢速查询日志和配置文件集合中。

数据类型: string

默认值: nil

示例:

const uri = "mongodb://localhost:27017/?appName=yourAppName"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

指定驱动程序是否正在连接到负载均衡器。仅当满足以下所有条件时,才能将此属性设立为 true:

  • 您仅指定一个托管名

  • 您没有连接到副本集

  • 您没有使用 SrvMaxHosts属性

  • 您没有使用 DirectConnection属性

数据类型: bool

默认值: false

示例:

const uri = "mongodb://localhost:27017/?loadBalanced=true"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

初始填充种子列表或在 SRV 轮询期间向拓扑结构添加新主机时要随机选择的 SRV 结果的最大数量。

仅当连接字符串模式设立为 ConnectionStringScheme.MongoDBPlusSrv 时才能使用此属性。连接到副本集时无法使用它。

数据类型:非负 int

默认值: 0

示例:

opts := options.Client().
SetSRVMaxHosts(5)
client, _ := mongo.Connect(opts)

SRV 资源记录的服务名称,驱动程序会检索该服务名称以构建您的种子列表。驱动程序使用该服务名称创建 SRV URI,其格式如下:

_{srvServiceName}._tcp.{hostname}.{domainname}

此属性会覆盖发现和轮询中 SRV 查找的默认服务名称。默认值为 "mongodb"。

仅当连接字符串模式设立为 ConnectionStringScheme.MongoDBPlusSrv 时才能使用此属性。连接到副本集时无法使用它。

数据类型: string

默认值: mongodb

示例:

const uri = "mongodb+srv://localhost/?srvServiceName=yourServiceName"
client, _ := mongo.Connect(options.Client().ApplyURI(uri))

要了解有关可在连接字符串中指定的选项的更多信息,请参阅MongoDB Server手册中的连接字符串选项。

有关此页面上使用的类型的更多信息,请参阅以下API文档: