db.collection.validate()
MongoDB とドライバー
このページでは、 mongosh
メソッドについて説明します。MongoDB ドライバーで同等のメソッドを確認するには、ご使用のプログラミング言語の対応するページを参照してください。
説明
バージョン 6.2 での変更。
db.collection.validate(<documents>)
コレクションを検証します。 メソッドは、コレクションデータとインデックスをスキャンして正確性を確認し、結果を返します。 出力の詳細については、「 出力の検証 」を参照してください。
バージョン5.0以降では、
db.collection.validate()
メソッドでもコレクション内の不整合を修正できます。インデックスの不一致には、次のものが含まれます。
インデックスはマルチキーですが、マルチキー フィールドはありません。
インデックスには、マルチキーではないフィールドをカバーするmultikeyPathがあります。
インデックスにmultikeyPathsはありませんが、マルチキー ドキュメントは存在します( 3.4 以前にビルドされたインデックスの場合)。
db.collection.validate()
コマンドによって不整合が検出された場合は、警告が返され、インデックスの修復フラグはtrue
に設定されます。db.collection.validate()
は、コレクションのスキーマ検証ルールに違反するドキュメントも検証します。db.collection.validate()
メソッドはvalidate
コマンドのラッパーです。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
db.collection.validate()
メソッドの構文は次のとおりです。
db.collection.validate( { full: <boolean>, // Optional repair: <boolean>, // Optional, added in MongoDB 5.0 checkBSONConformance: <boolean> // Optional, added in MongoDB 6.2 } )
パラメーター
db.collection.validate()
メソッドは、 フィールドを持つ次の任意のドキュメント パラメータを取ることができます。
フィールド | タイプ | 説明 |
---|---|---|
ブール値 | 任意。 コマンドがより遅くてより詳細なチェックを実行するか、より高速であるが完全ではないチェックを実行するかを決定するフラグです。
デフォルトは WiredTiger storage engine の場合、ディスク上のデータを検証する前にチェックポイントが強制され、メモリ内のすべてのデータがディスクにフラッシュされるのは | |
ブール値 | 任意。 コマンドが修復を実行するかどうかを決定するフラグです。
デフォルトは 修復はスタンドアロン ノードでのみ実行できます。 この修復により、次の問題が修正されます。
詳細については、 の バージョン 5.0 で追加 | |
ブール値 | 任意。
バージョン 6.2 の新機能。 |
動作
パフォーマンス
db.collection.validate()
メソッドはリソースを集中的に消費する可能性があり、特に大規模なデータセットでは MongoDB インスタンスのパフォーマンスに影響を与える可能性があります。
db.collection.validate()
メソッドはコレクションに対して排他ロックを取得します。 これにより、操作が完了するまでコレクションに対するすべての読み取りと書込みがブロックされます。 セカンダリで実行すると、操作によって、完了するまでそのセカンダリ上の他のすべての操作がブロックされる可能性があります。
警告
検証には、プライマリと読み取りを処理しているセカンダリのパフォーマンスに影響する排他ロック要件があります。 読み取りまたは書込みを処理していないノードでdb.collection.validate()
を実行することのみを検討してください。
プライマリへの影響を最小限に抑えるには、クラスター内のデータを保持する(非アービタ)投票ノードの過半数が使用可能であり、レプリケーションラグが大幅にでないようにする必要があります。
クライアント アプリケーションへの検証操作の影響を最小限に抑えるには、読み取りリクエストを処理していないセカンダリ ノードでdb.collection.validate()
を実行します。 現在のプライマリ ノードをセカンダリ ノードに変換するには、 rs.stepDown()
メソッドを実行します。
db.collection.validate()
操作をクライアント トラフィックから完全に分離するには、次のいずれかのオプションを選択します。
レプリカセット ノードを分離するには、ローリング メンテナンス手順に従って一時的にクラスターから一時的に削除します。
データスループット メトリクス
$currentOp
コマンドとcurrentOp
コマンドには、進行中の操作を検証するためのdataThroughputAverage
とdataThroughputLastSecond
情報が含まれています。
検証操作のログ メッセージには、 dataThroughputAverage
とdataThroughputLastSecond
の情報が含まれます。
コレクション検証の改善
MongoDB 6.2以降では、 validate
コマンドとdb.collection.validate()
メソッドは次のようになります。
コレクションをチェックして、 BSON ドキュメントが BSON 仕様に準拠していることを確認します。
時系列コレクションの内部データの不整合をチェックします。
包括的な BSON チェックを可能にする新しいオプション
checkBSONConformance
が追加されました。
例
デフォルトの検証設定(具体的には、 full: false )を使用してコレクション
myCollection
を検証するには次のようにします。db.myCollection.validate() db.myCollection.validate({ }) db.myCollection.validate( { full: false } ) コレクション
myCollection
の完全な検証を実行するには、 full: trueを指定します。db.myCollection.validate( { full: true } ) コレクション
myCollection
を修復するには、修復: trueを指定します。db.myCollection.validate( { repair: true } ) myCollection
で追加の BSON 準拠チェックを実行するには、 checkpointBSONConformance: trueを指定します。db.myCollection.validate( { checkBSONConformance: true } )
出力の詳細については、「 出力の検証 」を参照してください。