validateDBMetadados
Definição
Novidades na versão 5.0.
validateDBMetadata
O comando
validateDBMetadata
verifica se os metadados armazenados de um banco de dados ou de uma collection são válidos em uma determinada versão da API.validateDBMetadata
relata erros, mas não tem o recurso de corrigir erros.
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.
| |
db | 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. |
collection | 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 db serão validadas. Se nenhum reconhecimento de data center for especificado, todas as collection em todos os reconhecimento de data center serão validadas. |
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
sales
no 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
sales
em 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.ok
Se o comando falhar,
ok
será definido como1
. Caso contrário,ok
está definido como0
.validateDBMetadata.ok
pode ter um valor de0
e, 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, }