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

db.collection.validate()

項目一覧

  • 説明
  • 互換性
  • 構文
  • 動作

MongoDB とドライバー

このページでは、 mongosh メソッドについて説明します。MongoDB ドライバーで同等のメソッドを確認するには、ご使用のプログラミング言語の対応するページを参照してください。

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala

バージョン 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()メソッドは、 フィールドを持つ次の任意のドキュメント パラメータを取ることができます。

フィールド
タイプ
説明

ブール値

任意。 コマンドがより遅くてより詳細なチェックを実行するか、より高速であるが完全ではないチェックを実行するかを決定するフラグです。

  • trueの場合、 はより詳細なチェックを実行しますが、次の例外があります。

    • WiredTiger のoplogで完全に検証されると、より詳細なチェックがスキップされます。

  • falseの場合、 は一部のチェックを省略することで、チェックが高速化されますが、完全性は低下します。

デフォルトは false です。

WiredTiger storage engine の場合、ディスク上のデータを検証する前にチェックポイントが強制され、メモリ内のすべてのデータがディスクにフラッシュされるのはfull検証プロセスのみです。

ブール値

任意。 コマンドが修復を実行するかどうかを決定するフラグです。

  • trueの場合は修復が実行されます。

  • falseの場合、修復は実行されません。

デフォルトは false です。

修復はスタンドアロン ノードでのみ実行できます。

この修復により、次の問題が修正されます。

  • 欠落しているインデックスエントリが見つかった場合は、欠落しているキーがインデックスに挿入されます。

  • 余計なインデックスエントリが見つかった場合は、余計なキーはインデックスから削除されます。

  • マルチキー インデックスではないインデックスでマルチキードキュメントが見つかった場合、そのインデックスはマルチキー インデックスに変更されます。

  • インデックスのマルチキー パスで指定されていないマルチキードキュメントが見つかった場合、インデックスのマルチキー パスが更新されます。

  • BSON データが無効な破損したドキュメントが見つかった場合、ドキュメントは削除されます。

詳細については、 の--repair オプションを参照してくださいmongod

バージョン 5.0 で追加

ブール値

任意trueの場合、コレクションがチェックされ、 BSON ドキュメントが BSON 仕様に準拠していることを確認します。 チェックにより、検証操作を完了するための時間が長くなります。 問題は警告として返されます。

checkBSONConformance:

  • デフォルトは、false に設定されています。

  • fulltrueに設定されていると有効になります。

  • 次の場合は使用できません。

    • repair true に設定します。

    • metadata true に設定します。

バージョン 6.2 の新機能

db.collection.validate()メソッドはリソースを集中的に消費する可能性があり、特に大規模なデータセットでは MongoDB インスタンスのパフォーマンスに影響を与える可能性があります。

db.collection.validate()メソッドはコレクションに対して排他ロックを取得します。 これにより、操作が完了するまでコレクションに対するすべての読み取りと書込みがブロックされます。 セカンダリで実行すると、操作によって、完了するまでそのセカンダリ上の他のすべての操作がブロックされる可能性があります。

警告

検証には、プライマリと読み取りを処理しているセカンダリのパフォーマンスに影響する排他ロック要件があります。 読み取りまたは書込みを処理していないノードでdb.collection.validate()を実行することのみを検討してください。

プライマリへの影響を最小限に抑えるには、クラスター内のデータを保持する(非アービタ)投票ノードの過半数が使用可能であり、レプリケーションラグが大幅にでないようにする必要があります。

クライアント アプリケーションへの検証操作の影響を最小限に抑えるには、読み取りリクエストを処理していないセカンダリ ノードでdb.collection.validate()を実行します。 現在のプライマリ ノードをセカンダリ ノードに変換するには、 rs.stepDown()メソッドを実行します。

db.collection.validate()操作をクライアント トラフィックから完全に分離するには、次のいずれかのオプションを選択します。

$currentOpコマンドとcurrentOpコマンドには、進行中の操作を検証するためのdataThroughputAveragedataThroughputLastSecond情報が含まれています。

検証操作のログ メッセージには、 dataThroughputAveragedataThroughputLastSecondの情報が含まれます。

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 } )

出力の詳細については、「 出力の検証 」を参照してください。

戻る

db.collection.updateOne