Docs Menu
Docs Home
/
MongoDBマニュアル
/

再試行可能な読み取り

項目一覧

  • 前提条件
  • 再試行可能な読み取りの有効化
  • 再試行可能な読み取り操作
  • 動作

再試行可能な読み取りを使用すると、MongoDB は、特定のネットワークまたはサーバーのエラーが発生した場合に、特定の読み取り操作を 1 回自動的に再試行できます。

ドライバーの最小バージョン

MongoDB Server 4.2 以降と互換性のある公式の MongoDB ドライバーは、再試行可能な読み取りをサポートしています。

公式 MongoDB ドライバーの詳細については、「 MongoDB ドライバー 」を参照してください。

サーバーの最小バージョン
ドライバーは MongoDB Server 3.6 以降に接続されている場合にのみ、読み取り操作を再試行できます。

MongoDB Server 4.2以降と互換性のある公式の MongoDB ドライバーは、デフォルトで再試行可能な読み取りを有効にします。 再試行可能な読み取りを明示的に無効にするには、配置用のretryReads=false 接続string で {5 を指定します。

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 ドライバーには、ヘルパー メソッドや再試行可能な読み取り操作をラップするメソッドなど、他の操作の再試行可能なサポート含まれている場合があります。 メソッドが再試行可能な読み取りを明示的にサポートしているかどうかは、ドライバー のドキュメントを参照してください。

Tip

以下も参照してください。

次の操作では、再試行可能な読み取りはサポートされていませ

  • db.collection.mapReduce()

  • getMore

  • 読み取りコマンドや書込みコマンドには依存しない汎用のDatabase.runCommandヘルパーに渡される任意の読み取りコマンド。

MongoDB の再試行可能な書き込みでは、再試行は1 回だけです。 これは、一時的なネットワークエラーやレプリカセットの選挙には役立ちますが、永続的なネットワークエラーには対応できません。

ドライバーは、読み取り操作を再試行する前に、読み取りコマンドの元の 読み込み設定( read preference )を使用して サーバーを選択 します。ドライバーが元の読み込み設定(read preference)を使用して再試行対象のサーバーを選択できない場合、ドライバーは元のエラーを返します。

ドライバーはサーバー選択を実行する前にserverSelectionTimeoutMSミリ秒待機します。 再試行可能な読み取りでは、 serverSelectionTimeoutMS待機した後に適格なサーバーが存在しないインスタンスには対応しません。

戻る

再試行可能な書き込み