Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

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

该命令接受以下字段:

字段
类型
说明

文档

所有字段均为必填字段

  • version字符串

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

  • strict布尔值

    如果trueAPIStrictError响应将包含在输出中。

  • deprecationErrors布尔值

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

db

字符串

可选。 要验证的数据库名称。 如果未指定数据库,则将验证所有数据库。

collection

字符串

可选。 要验证的collection或视图的名称。如果未指定collection或视图,则将验证由db指定的所有collection。如果未指定数据库,则将验证所有数据库中的所有collection。

  • 验证所有数据库中的所有collection,报告APIStrictErrorAPIVersionError错误响应。

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

    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.apiVersionErrors

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

validateDBMetadata.apiVersionErrors[n].ns

出现错误的collection或视图的命名空间。

validateDBMetadata.apiVersionErrors[n].code

数字错误代码。

validateDBMetadata.apiVersionErrors[n].codeName

错误代码的名称。

validateDBMetadata.apiVersionErrors[n].errmsg

描述错误的字符串。

validateDBMetadata.ok

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

validateDBMetadata.hasMoreErrors

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

使用示例 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,
}

后退

验证