Definição
Novidades na versão 5.0.
validateDBMetadataO comando
validateDBMetadataverifica se os metadados armazenados de um banco de dados de dados ou de uma collection são válidos em uma determinada versão da API.validateDBMetadatarelata erros, mas não tem o recurso de corrigir erros.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> }, db: <string>, collection: <string>, } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
documento | Todos os campos são obrigatórios.
| |
| string | Opcional. O nome do banco de dados para validar. Se nenhum banco de dados for especificado, todos os bancos de dados serão validados. |
| string | Opcional. O nome da collection ou visualização para validar. Se nenhuma collection ou visualização for especificada, todas as collection no reconhecimento de data center especificada por |
Comportamento
Valide todos os collection em todos os reconhecimento de data center, relatando respostas de erro APIStrictError e APIVersionError .
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, }) Validar todas as collection em
inventory:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", }) Validar a collection
salesno reconhecimento de data centerinventory:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", collection: "sales", }) Validar toda e qualquer coleção
salesem todos os bancos de dados:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
Observação
Seu usuário deve ter a ação de privilégio validate em todas as collection que você deseja validar.
Saída
{ apiVersionErrors: [ { ns: <string>, code: <int>, codeName: <string>, errmsg: <string> } ], ok: <int>, hasMoreErrors: <boolean>, }
validateDBMetadata.okSe o comando falhar,
okserá definido como1. Caso contrário,okestá definido como0.validateDBMetadata.okpode ter um valor de0e, mesmo assim, relatar erros de validação.
Exemplo
Use o código da API de query de amostra para criar uma coleção de sales em 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") } ])
Adicione um índice de texto no campo item .
db.sales.createIndex( { item: "text" } )
Valide a coleção sales para conformidade estrita com a versão 1 da API e inclua deprecationErrors na saída.
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
validateDBMetadata reporta um APIStrictError no índice 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, }