Ajouter un validateur à une collection
Vous associerez un validateur JSON Schema avec createCollection et collMod afin d’imposer les champs obligatoires et les types de données.
Ajouter un validateur à une collection est une leçon MongoDB Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage MongoDB Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours MongoDB Academy comprend 4 leçons au total.
Pourquoi la validation de schéma est importante
MongoDB est flexible au niveau du schéma par défaut : tout document peut être inséré, quelle que soit sa structure. Bien que cela soit utile pendant le développement, les bases de données de production ont besoin de garde-fous pour empêcher les données mal formées. La fonctionnalité de validation de schéma de MongoDB vous permet d’associer un ensemble de règles de schéma JSON à une collection afin que seuls les documents correctement structurés puissent être insérés ou mis à jour, en détectant les problèmes de qualité des données au niveau de la base avant qu’ils ne se propagent.
JSON Schema comme langage de validation
MongoDB utilise la spécification standard du secteur JSON Schema (version 4) pour exprimer les règles de validation. Vous définissez un objet $jsonSchema qui indique quels champs sont obligatoires, quels types ils doivent avoir et quelles contraintes supplémentaires s’appliquent. Le même format est utilisé partout où JSON Schema intervient : dans les spécifications OpenAPI, les bibliothèques de formulaires et désormais les validateurs MongoDB.
Ajouter un validateur lors de la création d’une collection
Transmettez une option validator lors de l’appel à db.createCollection(). Le validateur contient un document $jsonSchema. L’exemple ci-dessous exige que chaque document users contienne un name (chaîne de caractères) et un email (chaîne de caractères), et autorise facultativement un age (entier).
db.createCollection('users', {
validator: {
$jsonSchema: {
bsonType: 'object',
required: ['name', 'email'],
properties: {
name: { bsonType: 'string', description: 'must be a string and is required' },
email: { bsonType: 'string', description: 'must be a string and is required' },
age: { bsonType: 'int', minimum: 0, description: 'optional, must be a non-negative int' }
}
}
}
});Ajouter un validateur à une collection existante
Utilisez la commande collMod (modification de collection) pour associer ou mettre à jour un validateur sur une collection qui existe déjà et peut déjà contenir des données. Par défaut, cette opération ne valide pas les documents existants : elle s’applique uniquement aux écritures futures, sauf si vous modifiez également validationLevel.
db.runCommand({
collMod: 'users',
validator: {
$jsonSchema: {
bsonType: 'object',
required: ['name', 'email'],
properties: {
name: { bsonType: 'string' },
email: { bsonType: 'string' }
}
}
}
});Que se passe-t-il lorsque la validation échoue
Par défaut, si un document ne respecte pas le validateur, MongoDB rejette l’écriture et génère une erreur : Document failed validation. L’erreur contient un champ details qui explique précisément quelle règle a été enfreinte, ce qui facilite le diagnostic et la correction du document concerné. L’insertion ou la mise à jour est entièrement annulée : aucune écriture partielle n’a lieu.
// This insert violates the validator — email is missing
try {
db.users.insertOne({ name: 'Bob' });
} catch (err) {
console.error(err.errInfo.details);
// Output: required field 'email' is missing
}Afficher le validateur actuel
Pour inspecter le validateur associé à une collection, utilisez db.getCollectionInfos() ou interrogez l’espace de noms system.js. Le document renvoyé contient la spécification complète du validateur sous options.validator, ce qui vous permet de consulter, copier ou comparer les validateurs entre différents environnements.
// List all collections and their options, including validators
const info = db.getCollectionInfos({ name: 'users' });
console.log(JSON.stringify(info[0].options.validator, null, 2));Supprimer un validateur
Pour supprimer toute validation d’une collection, exécutez collMod avec un objet de validation vide. La collection revient ainsi à son état par défaut, sans schéma imposé. Vous pouvez effectuer cette opération temporairement lors d’une migration massive de données ou définitivement lorsque vous abandonnez la validation au profit de contrôles au niveau de l’application.
// Remove the validator entirely
db.runCommand({
collMod: 'users',
validator: {}
});Validation avec Mongoose et MongoDB natif
Mongoose possède sa propre validation de schéma au niveau de l’ODM, qui s’exécute en JavaScript avant l’envoi des données à MongoDB. Toutefois, la validation Mongoose peut être contournée avec insertMany ou des appels directs au pilote. L’ajout d’un validateur JSON Schema au niveau de la base de données constitue un filet de sécurité supplémentaire qu’aucun client ne peut contourner, quel que soit le pilote ou le langage utilisé.
Valider des objets imbriqués
Les validateurs JSON Schema peuvent vérifier les sous-documents intégrés. Utilisez la clé properties pour définir des règles concernant les champs imbriqués, et indiquez que l’objet imbriqué lui-même est de type bsonType: 'object'. Vous pouvez ainsi valider chaque niveau d’un document hiérarchique.
db.createCollection('orders', {
validator: {
$jsonSchema: {
bsonType: 'object',
required: ['customerId', 'shippingAddress'],
properties: {
customerId: { bsonType: 'objectId' },
shippingAddress: {
bsonType: 'object',
required: ['street', 'city'],
properties: {
street: { bsonType: 'string' },
city: { bsonType: 'string' }
}
}
}
}
}
});Valider les éléments d’un tableau
Pour vérifier qu’un champ de type tableau contient uniquement des documents présentant une structure donnée, utilisez items dans la définition de la propriété. Chaque élément du tableau sera validé par rapport au schéma items. Cette approche est utile pour imposer la structure des lignes intégrées, des balises ou des tableaux d’adresses.
db.createCollection('carts', {
validator: {
$jsonSchema: {
bsonType: 'object',
properties: {
items: {
bsonType: 'array',
items: {
bsonType: 'object',
required: ['productId', 'qty'],
properties: {
productId: { bsonType: 'objectId' },
qty: { bsonType: 'int', minimum: 1 }
}
}
}
}
}
}
});Validation de schéma dans Atlas
MongoDB Atlas fournit une interface graphique permettant de créer et de modifier les validateurs de collections sans écrire de JSON brut. Dans l’onglet Schema de la collection, vous pouvez ajouter des propriétés, définir des types et marquer des champs comme obligatoires à l’aide d’un formulaire. Atlas affiche également un score de validation — le pourcentage de documents existants qui respectent le schéma actuel — afin de vous aider à mesurer la qualité des données avant d’activer une validation stricte.
Vérification rapide
Vérifiez votre compréhension des concepts de MongoDB et des bases de données NoSQL présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que les validateurs JSON Schema sont associés via createCollection ou collMod, que les échecs de validation rejettent l’écriture et renvoient une erreur détaillée, et que les objets imbriqués et les tableaux peuvent également être validés dans le même document de schéma. Nous allons maintenant explorer en détail les contraintes type, required et enum.
Apprends JavaScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Ajouter un validateur à une collection » est-elle gratuite ?
Oui — le texte complet de « Ajouter un validateur à une collection » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours MongoDB Academy, passe à CoddyKit PRO. Le cours MongoDB Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Ajouter un validateur à une collection » ?
Vous associerez un validateur JSON Schema avec createCollection et collMod afin d’imposer les champs obligatoires et les types de données. Tu pratiques MongoDB Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer MongoDB Academy ?
Aucune expérience préalable n'est requise. MongoDB Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Ajouter un validateur à une collection » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon MongoDB Academy ?
Oui. Chaque leçon MongoDB Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Ajouter un validateur à une collection
- Contraintes de type, d’obligation et d’énumération
- Niveaux et actions de validation
- Faire évoluer les schémas sans interruption de service