文档菜单
文档首页
/
MongoDB 手册
/ / /

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

该命令接受以下字段

字段
类型
描述
document

所有字段均为必填项.

  • version (字符串)

    要验证的API版本。目前,"1" 是唯一版本。

  • strict布尔值

    如果 true,则输出中将包含 APIStrictError 响应。

  • deprecationErrors布尔值

    如果 true,则输出中将包含 APIDeprecationError 响应。

db
字符串
可选。要验证的数据库名称。如果没有指定数据库,则将验证所有数据库。
collection
字符串
可选。要验证的集合或视图名称。如果没有指定集合或视图,则将验证由 db 指定的数据库中的所有集合。如果没有指定数据库,则将验证所有数据库中的所有集合。
  • 验证所有数据库中的所有集合,报告 APIStrictErrorAPIVersionError 错误响应。

    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",
    })
  • 验证所有数据库中的所有 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.apiVersionErrors

描述API版本错误的文档数组。

validateDBMetadata.apiVersionErrors[n].ns

发生错误的集合或视图的命名空间。

validateDBMetadata.apiVersionErrors[n].code

错误代码的数字。

validateDBMetadata.apiVersionErrors[n].codeName

错误代码的名称。

validateDBMetadata.apiVersionErrors[n].errmsg

描述错误的字符串。

validateDBMetadata.ok

如果命令失败,ok 设置为 1。否则,ok 设置为 0。即使 validateDBMetadata.ok 的值为 0,也可能报告验证错误。

validateDBMetadata.hasMoreErrors

如果为 true,则表示存在其他错误。

使用示例查询API代码在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" } )

验证sales集合是否完全符合API版本1,并在输出中包含deprecationErrors

db.runCommand( {
validateDBMetadata: 1,
apiParameters: {
version: "1",
strict: true,
deprecationErrors: true
},
collection: "sales",
})

validateDBMetadataitem_text索引上报告了一个APIStrictError

{
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,
}

返回

validate