Definición
Nuevo en la versión 5.0.
validateDBMetadataEl
validateDBMetadataEl comando verifica que los metadatos almacenados de una base de datos o una colección sean válidos dentro de una versión de API particular.validateDBMetadatainforma errores, pero no tiene la capacidad de corregirlos.
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 validará. Si no se especifica ninguna base de datos, se validarán todas. |
| 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, informando las respuestas de error APIStrictError y APIVersionError.
db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, }) Validar todas las colecciones en
inventory:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", }) Validar la colección
salesen la base de datosinventory:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, db: "inventory", collection: "sales", }) Validar todas y cada una de las colecciones
salesen todas las bases de datos:db.runCommand( { validateDBMetadata: 1, apiParameters: { version: "1", strict: true, deprecationErrors: true }, collection: "sales", })
Nota
Su usuario debe tener el privilegio de acción en todas las colecciones que desee validate validar.
Salida
{ apiVersionErrors: [ { ns: <string>, code: <int>, codeName: <string>, errmsg: <string> } ], ok: <int>, hasMoreErrors: <boolean>, }
validateDBMetadata.okSi el comando falla,
okse establece1en. De lo contrario,okse establece0en. puede tener un valorvalidateDBMetadata.okde0y 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 item campo.
db.sales.createIndex( { item: "text" } )
Valide la colección sales para verificar el estricto cumplimiento con la versión de API 1 e incluya 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, }