Docs 菜单
Docs 主页
/ / /
Go 驱动程序
/ /

连接选项

在此页面上

  • Overview
  • 选项
  • 单一超时设置
  • 超时示例

本指南介绍了几个常见的MongoDB连接和身份验证选项。 您可以将连接选项作为参数传递到连接 URI 中,以指定客户端的行为。

下表描述了您可以在连接 URI 中设立的连接选项。 每个条目都提供了选项名称、值类型、默认值和选项说明。

选项名称
类型
默认值
说明

timeoutMS

整型

null

指定在返回超时错误之前在 Client 上运行的单个操作可以花费的毫秒数。仅当操作的上下文没有截止时间时,操作才会遵循此设置。

connectTimeoutMS

整型

30000

指定超时前尝试连接的时间(以毫秒为单位)。

maxPoolSize

整型

100

指定连接池在给定时间内的最大连接数。

replicaSet

字符串

null

指定集群的副本集名称。副本集中的所有节点必须具有相同的副本集名称,否则客户端不会将其视为副本集的一部分。

maxIdleTimeMS

整型

0

指定连接在被删除和关闭之前可以在连接池中保持空闲状态的最长时间。默认值为 0,这意味着连接可以无限期地保持未使用状态。

minPoolSize

整型

0

指定驱动程序在单个连接池中维护的最小连接数。

serverSelectionTimeoutMS

整型

30000

指定找到一个可用且适合执行操作的服务器所允许等待的毫秒数。

heartbeatFrequencyMS

整型

10000

指定周期性后台服务器检查之间所需等待的毫秒数。

TLS

布尔

false

指定是否与实例建立传输层安全 (TLS) 连接。在连接字符串中使用 DNS 种子列表 (SRV) 时,会自动设置为 true。您可以将值设置为 false 来覆盖此行为。

w

字符串或整数

null

指定写关注(write concern)。 要学习;了解有关值的更多信息,请参阅有关 写关注选项的服务器文档。

directConnection

布尔

false

指定是否强制将所有操作分派到连接 URI 中指定的主机。

有关连接选项的完整列表,请参阅 ClientOptions API文档。

您可以在 Client实例上设立单个 Timeout 选项,以指定执行单个操作所需的最长时间。

通过在为 Client实例指定选项时调用 SetTimeout() 方法或在连接 URI 中指定 timeoutMS 选项,设置客户端级超时。 默认下,如果您没有为特定操作设立不同的超时时间,则应用应用程序其他位置的所有 DatabaseCollectionSessionChangeStreamBucket 实例都会继承 ClientTimeout 选项在操作的上下文中。

如果为传递到操作的上下文设立了超时,驾驶员将使用该值进行操作。 如果未指定上下文超时,则操作上下文会从 Client实例中派生超时。

注意

超时规范下的重试

如果您在 Client 上或在操作级上下文中设立了超时,并且服务器返回了可重试错误,则驾驶员会在超时之前尽可能多次重试该操作。

一旦超时,驾驶员就会返回超时错误。 有关可重试读取和可重试写入的更多信息,请参阅服务器手册。

本节提供的示例演示了在应用程序中设立超时的不同方法。

以下代码演示如何使用 SetTimeout() 方法对 Client设立Timeout 选项:

opts := options.Client().SetTimeout(5 * time.Second)
client, err := mongo.Connect(opts)

以下示例展示了如何使用 timeoutMS URI 选项设立单次超时。 然后,代码执行继承超时的插入操作:

uri := "mongodb://user:pass@sample.host:27017/?timeoutMS=5000"
client, err := mongo.Connect(options.Client().ApplyURI(uri))
...
coll.InsertOne(context.Background(), doc)

以下示例展示了如何在 Context 中设立操作级超时,该操作级超时优先级于您可能已设立的客户端级超时:

ctx, cancel := context.WithTimeout(context.TODO(), time.Second)
defer cancel()
res, err := coll.InsertOne(ctx, bson.D{{"x", 2}})

后退

连接指南