定義
バージョン 5.0 の新機能。
validateDBMetadataThe
validateDBMetadatacommand checks that the stored metadata of a database or a collection is valid within a particular API version.validateDBMetadataはエラーを報告しますが、エラーを修正する機能はありません。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
注意
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> }, db: <string>, collection: <string>, } )
コマンドフィールド
このコマンドは、次のフィールドを使用します。
フィールド | タイプ | 説明 |
|---|---|---|
ドキュメント | すべてのフィールドが 必須です。
| |
| string | 任意。 検証するデータベースの名前。 データベースが指定されていない場合は、すべてのデータベースが検証されます。 |
| string | 任意。 検証するコレクションまたはビューの名前。 コレクションまたはビューが指定されていない場合は、 |
動作
すべてのデータベース内のすべてのコレクションを検証し、 APIStrictErrorおよびAPIVersionErrorエラー応答を報告します。
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, }) inventoryのすべてのコレクションを検証します。db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", }) inventoryデータベース内のsalesコレクションを検証します。db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", collection: "sales", }) すべてのデータベースにわたる任意の 60
salesコレクションを検証します。db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
注意
ユーザーは、検証するすべてのコレクションに対してvalidate特権アクションを持っている必要があります。
出力
{ apiVersionErrors: [ { ns: <string>, code: <int>, codeName: <string>, errmsg: <string> } ], ok: <int>, hasMoreErrors: <boolean>, }
validateDBMetadata.okIf the command fails,
okis set to1. Otherwise,okis set to0.validateDBMetadata.okmay have a value of0and still report validation errors.
例
Use the sample Query API code to create a sales collection in mongosh:
db.sales.insertMany([ { "_id" : 1, "item" : "shoes", "price" : 10, "quantity" : 2, "date" : ISODate("2021-01-01T08:00:00Z") }, { "_id" : 2, "item" : "hat", "price" : 20, "quantity" : 1, "date" : ISODate("2021-02-03T09:00:00Z") }, { "_id" : 3, "item" : "gloves", "price" : 5, "quantity" : 5, "date" : ISODate("2021-02-03T09:05:00Z") }, { "_id" : 4, "item" : "pants", "price" : 10, "quantity" : 10, "date" : ISODate("2021-02-15T08:00:00Z") }, { "_id" : 5, "item" : "socks", "price" : 5, "quantity" : 10, "date" : ISODate("2021-02-15T09:05:00Z") }, { "_id" : 6, "item" : "shirt", "price" : 5, "quantity" : 5, "date" : ISODate("2021-02-15T12:05:10Z") }, { "_id" : 7, "item" : "belt", "price" : 5, "quantity" : 10, "date" : ISODate("2021-02-15T14:12:12Z") }, { "_id" : 8, "item" : "blouse", "price" : 10, "quantity" : 5, "date" : ISODate("2021-03-16T20:20:13Z") } ])
itemフィールドにテキスト インデックスを追加します。
db.sales.createIndex( { item: "text" } )
API バージョン 1 に厳密に準拠しているかどうかを確認し、出力にsales deprecationErrorsを含めるようにします。
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
validateDBMetadata reports an APIStrictError on the item_text index.
{ apiVersionErrors: [ { ns: 'test.sales', code: 323, codeName: 'APIStrictError', errmsg: 'The index with name item_text is not allowed in API version 1.' } ], ok: 1, hasMoreErrors: false, }