validateDBMetadata
定义
版本 5.0 中的新增功能。
validateDBMetadata
validateDBMetadata
命令会检查数据库或集合的存储元数据在特定 API 版本中是否有效。validateDBMetadata
报告错误,但没有能力修复错误。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有MongoDB Atlas集群都支持此命令。有关Atlas支持所有命令的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> }, db: <string>, collection: <string>, } )
命令字段
该命令接受以下字段:
字段 | 类型 | 说明 |
---|---|---|
文档 | 所有字段均为必填字段。
| |
db | 字符串 | 可选。 要验证的数据库名称。 如果未指定数据库,则将验证所有数据库。 |
collection | 字符串 | 可选。 要验证的collection或视图的名称。如果未指定collection或视图,则将验证由 db 指定的所有collection。如果未指定数据库,则将验证所有数据库中的所有collection。 |
行为
验证所有数据库中的所有collection,报告APIStrictError和APIVersionError错误响应。
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, }) 验证
inventory
中的所有collection: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", }) 验证所有数据库中的所有
sales
collection:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
注意
您的用户必须对要验证的所有collection具有validate
权限操作。
输出
{ apiVersionErrors: [ { ns: <string>, code: <int>, codeName: <string>, errmsg: <string> } ], ok: <int>, hasMoreErrors: <boolean>, }
validateDBMetadata.ok
如果命令失败,则将
ok
设置为1
。 否则,ok
被设置为0
。validateDBMetadata.ok
的值可能为0
,但仍报告验证错误。
例子
使用示例 Query API 代码在mongosh
中创建sales
集合:
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" } )
验证sales
集合是否严格符合 API 版本 1,并在输出中包含deprecationErrors
。
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
validateDBMetadata
报告APIStrictError
item_text
索引上的 。
{ 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, }