Datenintegrität mit Schema-Validierung erzwingen
Obwohl MongoDB für sein flexibles Schema bekannt ist, können Sie mit der Schema-Validierung eine bestimmte Struktur für Ihre Dokumente erzwingen. Dies stellt sicher, dass alle Dokumente in einer Collection einem definierten Regelwerk entsprechen, was die Datenqualität und -konsistenz verbessert.
In diesem letzten Schritt fügen Sie der books-Collection einen Validator hinzu. Dieser Validator verlangt, dass jedes Dokument einen title, author und year hat, und erzwingt spezifische Datentypen und Bereiche für diese Felder.
Verwenden Sie den Befehl collMod (modify collection), um den Validator hinzuzufügen.
db.runCommand({
collMod: "books",
validator: {
$jsonSchema: {
bsonType: "object",
required: ["title", "author", "year"],
properties: {
title: {
bsonType: "string",
description: "must be a string and is required"
},
author: {
bsonType: "string",
description: "must be a string and is required"
},
year: {
bsonType: "int",
minimum: 1000,
maximum: 2024,
description: "must be an integer between 1000 and 2024"
}
}
}
}
});
Die Ausgabe { ok: 1 } bestätigt, dass der Validator erfolgreich angewendet wurde.
Testen wir nun den Validator, indem wir versuchen, ein Dokument einzufügen, das gegen die Regeln verstößt. Dieses Dokument hat ein year, das außerhalb des zulässigen Bereichs liegt.
db.books.insertOne({
title: "The Hobbit",
author: "J.R.R. Tolkien",
year: 999
});
Die Einfügung schlägt fehl, und MongoDB gibt eine Fehlermeldung zurück, die erklärt, dass das Dokument die Validierung nicht bestanden hat.
MongoBulkWriteException: Document failed validation
Dies bestätigt, dass Ihre Schema-Validierungsregel aktiv ist und die Integrität Ihrer Daten wirksam schützt. Diese leistungsstarke Funktion kombiniert die Flexibilität einer NoSQL-Datenbank mit der Zuverlässigkeit der Datenvalidierung.