Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Especifica el nivel de validación para los documentos existentes

Para los documentos que ya existen en su colección antes de agregar la validación, puede especificar cómo MongoDB aplica las reglas de validación a estos documentos.

El validationLevel de tu esquema determina los documentos para los cuales MongoDB aplica reglas de validación:

Nivel de validación
Comportamiento

moderate

MongoDB aplica las mismas reglas de validación tanto a la inserción de documentos como a la actualización de documentos válidos existentes que cumplan con las reglas de validación. No se requiere que las actualizaciones de documentos existentes en la colección que no cumplan con las reglas de validación pasen la validación.

strict

(Por defecto) MongoDB aplica las mismas reglas de validación a todas las inserciones y actualizaciones de documentos.

constraint

MongoDB aplica las reglas de validación a todas las inserciones y actualizaciones de documentos, y garantiza que cada documento de la colección cumpla con dichas reglas. A diferencia de strict, una colección con validación constraint no puede contener documentos que no fueran válidos antes de establecer este nivel. Este nivel añade las siguientes restricciones:

  • La acción de validación debe ser error o errorAndLog.

  • No puedes modificar las reglas de validación del esquema mientras el nivel sea constraint. Para cambiar tus reglas de validación, baja al nivel strict, modifica las reglas y luego vuelve al nivel constraint.

Nuevo en la versión 9.0.

Los ejemplos de esta página utilizan una colección movies. Para crear la colección e insertar los documentos que utilizan los ejemplos, ejecute el siguiente comando:

db.movies.insertMany( [
{ title: "The Godfather", year: 1972 },
{ title: "Casablanca", year: 1942 }
] )

El siguiente ejemplo agrega un validador moderate a la colección movies e inserta un documento que cumple con las reglas de validación.

1

Agregue un validador a la colección movies con moderate validationLevel:

db.runCommand( {
collMod: "movies",
validator: { $jsonSchema: {
bsonType: "object",
required: [ "title" ],
properties: {
title: {
bsonType: "string",
description: "title must be a string and is required"
}
}
} },
validationLevel: "moderate"
} )

Debido a que validationLevel es moderate, MongoDB aplica las reglas de validación a todas las inserciones de documentos y a las actualizaciones de documentos existentes que ya cumplen con las reglas.

2

El siguiente comando de inserción agrega un documento que incluye un campo title con un valor de cadena, que satisface la regla de validación:

db.movies.insertOne(
{ title: "Wings", year: 1927 }
)
3

La inserción se realiza correctamente porque el documento cumple con las reglas de validación. MongoDB devuelve una salida similar a la siguiente:

{
acknowledged: true,
insertedId: ...
}

El siguiente ejemplo agrega un validador strict a la colección movies e inserta un documento que cumple con las reglas de validación.

1

Agregue un validador a la colección movies con strict validationLevel:

db.runCommand( {
collMod: "movies",
validator: { $jsonSchema: {
bsonType: "object",
required: [ "title" ],
properties: {
title: {
bsonType: "string",
description: "title must be a string and is required"
}
}
} },
validationLevel: "strict"
} )

Debido a que validationLevel es strict, MongoDB aplica las reglas de validación a todas las inserciones y actualizaciones de documentos.

2

El siguiente comando de inserción agrega un documento que incluye un campo title con un valor de cadena, que satisface la regla de validación:

db.movies.insertOne(
{ title: "The Conversation", year: 1974 }
)
3

La inserción se realiza correctamente porque el documento cumple con las reglas de validación. MongoDB devuelve una salida similar a la siguiente:

{
acknowledged: true,
insertedId: ...
}

Nota

Al actualizar a la validación strict, MongoDB no comprueba retroactivamente si los documentos existentes en la colección superan la validación. Tras la actualización, la colección puede contener documentos no válidos que existían antes de la actualización. Sin embargo, las operaciones de actualización en documentos no válidos fallan debido al validador. Para actualizar un documento no válido, primero debe resolver el problema que provoca el fallo del validador.

El siguiente ejemplo actualiza la colección movies al nivel de validación constraint. Al actualizar al nivel constraint, MongoDB comprueba que todos los documentos que ya se encuentran en la colección cumplan con el validador.

Nota

El siguiente procedimiento se aplica a una colección que ya existe. Si establece validationLevel en constraint al crear la colección, no necesita establecer primero el nivel en strict ni preparar la colección.

1

Si el validationLevel de su colección no es ya strict, siga el procedimiento para especificar una validación estricta.

2

Ejecutar collMod con prepareConstraintValidationLevel configurado en true:

db.runCommand( {
collMod: "movies",
prepareConstraintValidationLevel: true
} )

Este comando prepara la colección para la actualización bloqueando bypassDocumentValidation e impidiendo cambios en el validador.

3

Ejecuta collMod para establecer validationLevel en constraint. El validationAction debe ser error o errorAndLog:

db.runCommand( {
collMod: "movies",
validationLevel: "constraint",
validationAction: "error"
} )

No se puede cambiar el nivel validator en la misma operación collMod que actualiza el nivel validationLevel a constraint. Configure las reglas de validación antes de ejecutar este comando. Para modificar las reglas posteriormente, reduzca el nivel a strict, modifique las reglas y, a continuación, actualice de nuevo a constraint.

Debido a que validationLevel es constraint, MongoDB aplica las reglas de validación a todas las inserciones y actualizaciones de documentos, independientemente de si un documento existente cumplía las reglas antes de la actualización.

Al establecer el nivel en constraint, MongoDB escanea todos los documentos existentes en la colección y la operación collMod falla si algún documento incumple el validador. Este escaneo puede resultar computacionalmente costoso para colecciones grandes. Si la operación falla, actualice los documentos que incumplen el validador antes de continuar.

4

El siguiente comando de inserción agrega un documento que incluye un campo title con un valor de cadena, que satisface la regla de validación:

db.movies.insertOne(
{ title: "Sunrise", year: 1927 }
)
5

La inserción se realiza correctamente porque el documento cumple con las reglas de validación. MongoDB devuelve una salida similar a la siguiente:

{
acknowledged: true,
insertedId: ...
}

Importante

La salida de errores está destinada al uso humano. Podría cambiar en el futuro y no debe dependerse de ello en scripts.