Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

validateDBMetadata

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Campos de comando
  • Comportamento
  • Saída
  • Exemplo

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.

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

O comando tem a seguinte sintaxe:

db.runCommand(
{
validateDBMetadata: 1,
apiParameters: {
version: <string>,
strict: <boolean>,
deprecationErrors: <boolean>
},
db: <string>,
collection: <string>,
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição
documento

Todos os campos são obrigatórios.

  • version (string)

    A versão da API para validar. Por enquanto, "1" é a única versão.

  • strict (booleano)

    Se true , as respostas APIStrictError serão incluídas na saída.

  • deprecationErrors (booleano)

    Se true, as respostas APIDeprecationError serão incluídas na saída.

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.
  • 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 center inventory :

    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.

{
apiVersionErrors: [
{
ns: <string>,
code: <int>,
codeName: <string>,
errmsg: <string>
}
],
ok: <int>,
hasMoreErrors: <boolean>,
}
validateDBMetadata.apiVersionErrors

Array de documentos que descrevem erros de versão da API.

validateDBMetadata.apiVersionErrors[n].ns

namespace da collection ou visualização com erro.

validateDBMetadata.apiVersionErrors[n].code

Código de erro numérico.

validateDBMetadata.apiVersionErrors[n].codeName

Nome do código de erro.

validateDBMetadata.apiVersionErrors[n].errmsg

String que descreve o erro.

validateDBMetadata.ok

Se o comando falhar, ok será definido como 1. Caso contrário, ok está definido como 0. validateDBMetadata.ok pode ter um valor de 0 e, mesmo assim, relatar erros de validação.

validateDBMetadata.hasMoreErrors

Se true, há erros adicionais.

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

Voltar

validar