Docs 菜单

可重试读取

可重试读取允许 MongoDB 驱动程序在遇到某些网络或服务器错误时,自动重试某些读取操作一次。

最低驱动程序版本

与 MongoDB Server 4.2 及更高版本兼容的官方 MongoDB 驱动程序支持可重试读取。

有关 MongoDB 官方驱动程序的更多信息,请参阅 MongoDB 驱动程序

最低服务器版本
只有连接到 MongoDB Server 3.6 或更高版本时,驱动程序才能重试读取操作。

与 MongoDB Server 4.2 及更高版本兼容的 MongoDB 官方驱动程序默认启用了可重试读取功能。要显式禁用可重试读取,请在部署的连接字符串中指定 retryReads=false

mongosh 不支持可重试读取。

MongoDB 驱动程序支持重试以下读操作。该列表引用了每种方法的通用说明。有关具体语法和用法,请参阅该方法的驱动程序文档。

方法
描述
Collection.aggregate
Collection.count
Collection.countDocuments
Collection.distinct
Collection.estimatedDocumentCount
Collection.find
Database.aggregate

对于 Collection.aggregateDatabase.aggregate,驱动程序只能重试包括写入阶段的聚合管道,例如 $out$merge

CRUD API 读操作

Collection.watch
Database.watch
MongoClient.watch

变更流操作

MongoClient.listDatabases
Database.listCollections
Collection.listIndexes

枚举操作

Collection.find 支持的 GridFS 操作(例如 GridFSBucket.openDownloadStream

GridFS 文件下载操作

MongoDB 驱动程序可能会对其他操作提供重试支持,例如封装可重试读取操作的辅助方法或方法。请参考驱动程序文档,确定方法是否显式支持可重试读取。

提示

另请参阅:

可重试读取规范:支持的读取操作

以下操作支持可重试读取:

MongoDB 可重试读取仅进行一次重试尝试。这有助于解决暂时性网络错误或副本集选举,但不能解决持续性网络错误。

在重试读取操作之前,驱动程序使用读取命令的原始读取偏好执行服务器选择。如果驱动程序无法使用原始读取偏好选择服务器进行重试,则驱动程序会返回原始错误。

在执行服务器选择之前,驱动程序会等待 serverSelectionTimeoutMS 毫秒。可重试读取不会解决等待 serverSelectionTimeoutMS 后不存在符合条件的服务器的情况。