Definición
Nuevo en la versión 5.0.
validateDBMetadataLa
validateDBMetadataEl comando verifica que los metadatos almacenados de una base de datos o una colección sean válidos dentro de una versión particular de API.validateDBMetadatainforma de errores, pero no tiene la capacidad de corregir errores.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: <string>, strict: <boolean>, deprecationErrors: <boolean> }, db: <string>, collection: <string>, } )
Campos de comandos
El comando toma los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
Documento | Todos los campos son obligatorios.
| |
| string | opcional. El nombre de la base de datos que se va a validar. Si no se especifica ninguna base de datos, se validarán todas las bases de datos. |
| string | Opcional. El nombre de la colección o vista que se validará. Si no se especifica ninguna colección ni vista, se validarán todas las colecciones de la base de datos especificada |
Comportamiento
Validar todas las colecciones en todas las bases de datos e informar sobre las respuestas de error de APIStrictError y APIVersionError.
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, }) Valida todas las colecciones en
inventory:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", }) Validar la
salescolección en lainventorybase de datos:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", collection: "sales", }) Valide cualquier y todas las colecciones
salesen todas las bases de datos:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
Nota
Tu usuario debe tener la acción de privilegio validate en todas las colecciones que deseas validar.
Salida
{ apiVersionErrors: [ { ns: <string>, code: <int>, codeName: <string>, errmsg: <string> } ], ok: <int>, hasMoreErrors: <boolean>, }
validateDBMetadata.okSi el comando falla,
okse establece en1. De lo contrario,okse establece en0.validateDBMetadata.okpuede tener un valor de0y aun así reportar errores de validación.
Ejemplo
Utilice el código de muestra de la API de sales consulta para crear una mongosh colección en:
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") } ])
Añade un índice de texto en el campo item.
db.sales.createIndex( { item: "text" } )
Valida la colección sales para el cumplimiento estricto con la versión 1 de la API e incluye deprecationErrors en la salida.
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
validateDBMetadata reporta un APIStrictError en el item_text índice.
{ 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, }