Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Saltar la validación del esquema

En algunas situaciones, es posible que debas omitir las reglas de validación de esquema de una colección. Por ejemplo, si está restaurando datos potencialmente no válidos de una copia de seguridad a una colección que tiene reglas de validación. En este escenario, los documentos antiguos pueden no cumplir con los nuevos requisitos de validación.

La omisión de la validación del esquema se realiza por operación. Si omite la validación del esquema para insertar un documento no válido, cualquier actualización futura del documento no válido deberá:

  • También omitir la validación del esquema

  • Resulta en un documento válido

Puedes utilizar los siguientes comandos y métodos para omitir la validación en cada operación:

Para implementaciones que han activado el control de acceso, para omitir la validación de documentos, el usuario autenticado debe tener la acción bypassDocumentValidation. Los roles integrados dbAdmin y restore proporcionan esta acción.

El siguiente ejemplo crea una colección con validación de esquemas y luego inserta un documento no válido al omitir las reglas de validación.

1

Crea una colección students y usa el operador $jsonSchema para establecer reglas de validación de esquema:

db.createCollection("students", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "name", "year", "major", "address" ],
properties: {
name: {
bsonType: "string",
description: "must be a string and is required"
},
year: {
bsonType: "int",
minimum: 2017,
maximum: 3017,
description: "must be an integer in [ 2017, 3017 ] and is required"
}
}
}
}
} )
2

El documento siguiente no es válido porque el campo year está fuera de los límites permitidos (2017-3017):

{
name: "Alice",
year: Int32( 2016 ),
major: "History",
gpa: Double(3.0),
address: {
city: "NYC",
street: "33rd Street"
}
}

Para omitir las reglas de validación e insertar el documento no válido, ejecute el siguiente comando insert, que establece la opción bypassDocumentValidation en true:

db.runCommand( {
insert: "students",
documents: [
{
name: "Alice",
year: Int32( 2016 ),
major: "History",
gpa: Double(3.0),
address: {
city: "NYC",
street: "33rd Street"
}
}
],
bypassDocumentValidation: true
} )

Para confirmar que el documento se insertó correctamente, query la colección students:

db.students.find()

MongoDB devuelve el documento insertado:

[
{
_id: ObjectId("62bcb4db3f7991ea4fc6830e"),
name: 'Alice',
year: 2016,
major: 'History',
gpa: 3,
address: { city: 'NYC', street: '33rd Street' }
}
]

Volver

Gestionar documentos no válidos

En esta página