Docs Menu
Docs Home
/ /

Saltar la validación del esquema

En algunas situaciones, puede que necesite omitir las reglas de validación del esquema de una colección. Por ejemplo, si está restaurando datos potencialmente no válidos de una copia de seguridad a una colección con reglas de validación. En este caso, es posible que los documentos antiguos no cumplan 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

  • Resultado en un documento válido

Puede utilizar los siguientes comandos y métodos para omitir la validación por operación:

En las implementaciones con control de acceso habilitado, para omitir la validación de documentos, el usuario autenticado debe tener la acciónbypassDocumentValidation. Los roles integradosdbAdminyrestorepermiten esta acción.

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

1

Cree una students colección y utilice el $jsonSchema operador para establecer reglas de validación del 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 siguiente documento 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, consulte 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