Schéma de validation MongoDB

Quand on utilise MongoDB, les collections peuvent facilement contenir des types de données différents pour le même champ. Comment assurer qu’un champ soit toujours du même type ? Le schéma de validation MongoDB introduit dans la version 3.6 devrait nous aider.

Créer un schéma

Prenons pour l’exemple une collection evenements comprenant les champs suivant :

  • name, obligatoire, de type string
  • free, obligatoire, de type boolean
  • type, obligatoire, de type énumération
  • seats, facultatif, de type int ou long

Le schéma ainsi décrit est fermé: additionalProperties: false. Cela veut dire qu’il est impossible d’ajouter des champs supplémentaires. En mettant additionalProperties à true, le schéma est appliqué aux champs décrits et il est possible d’en ajouter d’autres.

Insertion de document

Appliquer un schéma à une collection existante

?? quid si la collection contient des données non valides contre le schéma ??

Voir le schéma appliqué à une collection

Le schéma est visible dans le champ options.validator.$jsonSchema

Un schéma validant des éléments imbriqués

Un document peut contenir des tableaux d’éléments complexes et les schémas permettent de les décrire aussi.
Pour l’exemple, admettons qu’un événement de boxe contienne de 1 à 10 combats entre 2 combattants sur 3 à 12 rounds.

Le schéma appliqué à la collection fightnights permet de valider l’insertion des éléments suivants :

Cette fonctionnalité permet d’avoir des données plus saines en échange d’un peu de flexibilité. Il est possible d’aller plus loin avec la validation de schéma JSON et cela sera pour un prochain article.

Références

JSON Schema Validation – MongoDB

Related Post

Recherche facettée avec MongoDB La recherche facettée avec MongoDB  évolue avec la sortie de la version 3.4. Concrètement, cette recherche (faceted search) permet aux utilisateurs de...
Débuter avec NodeJS, Express et MongoDB Un collègue m’a parlé de différents projets personnels orientés web et de son dilemne sur le choix des techologies. Curieux j’ai voulu essayer NodeJS,...

2 thoughts on “Schéma de validation MongoDB

  1. Merci pour ces informations c’est clair notamment la précision sur l’application possible sur une collection existante.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *