文档菜单
文档首页
/
MongoDB 手册
/

可重试读取

本页内容

  • 先决条件
  • 启用可重试读取
  • 可重试的读取操作
  • 行为

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

最低驱动程序版本

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

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

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

与MongoDB服务器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 驱动程序可能包括对其他操作的可重试支持,例如辅助方法或包装可重试读取操作的方法。有关是否显式支持可重试读取的信息,请参阅 驱动程序文档

提示

另请参阅

以下操作不支持可重试读

  • db.collection.mapReduce()

  • getMore

  • 传递给通用Database.runCommand辅助函数的任何读命令,该函数对读或写命令无感知。

MongoDB的重试读取只尝试重试一次。这有助于解决瞬态网络错误或副本集选举,但不能解决持久性网络错误。

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

驱动程序在执行服务器选择之前等待serverSelectionTimeoutMS毫秒。重试读取不能解决在等待serverSelectionTimeoutMS后没有合格服务器的情况。

返回

可重试写入