APUNTES
Tips para validacion en MongoDB
Quitar la flexibilidad a mongo
Para quitar la posibilidad de que aparescan propiedades adicionales en un documento que no esten especificadas.
Esto se logra agregando: additionalProperties: false
$jsonSchema: {
bsonType: 'object',
required: ['email', 'password', 'role'],
additionalProperties: false, // quitar flexibilidad
properties: {...}
De Christian Gonzalo:
Algo que no mencionó Nicolas, es que cuando se coloca la propiedad additionalProperties
en false
, también se debe agregar obligatoriamente la propiedad _id
en el array de required
y además validarlo en properties
. De lo contrario Mongo no permitirá la inserción de documentos, así tengan la estructura correcta.
$jsonSchema: {
required: ['_id','email', 'password', 'role'],
additionalProperties: false,
properties: {
_id: {
bsonType: 'objectId'
},
}
}
Reajustar el esquema sin borrar
Primero, para ver la informacion de las colecciones:
use("platzi_store");
db.getCollectionInfos();
Actualizar el esquema
Para cambiarlo, hay que enviar toda la definicion del validador porque va a re-escribirlo. Y requiere de un usuario con permisos de administrador en la base de datos.
<h5>Cambiar permisos (Mongo Atlas)</h5>- Ir a la administracion de la base de datos
- Ir a
Security
- Ir a
Database Access
- Editar/Elevar los permisos del usuario elegido (incluso para el original)
- Pasar del
Read and write to any database
aAtlas admin
- Guardar los cambios con
Update User
db.runCommand({
collMod: 'users', // coleccion a modificar
validator: { // propiedad de la coleccion a modificar
$jsonSchema: {
bsonType: 'object', // igual
required: ['email', 'password', 'role'], // igual
additionalProperties: true, // el cambio
properties: {...} // igual
}
}
})
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?