In MongoDB creëert u geen traditioneel database schema zoals u zou doen in SQL. MongoDB is een NoSQL database die op een flexibele, schaalbare en ongestructureerde manier data opslaat in ‘collections’ in plaats van tabellen. Een MongoDB-collectie houdt geen schema’s vast, wat betekent dat u documenten (rijen in SQL) met verschillende velden en structuren in dezelfde collectie kunt opslaan.
Echter, met MongoDB versie 3.2 en later, kunt u optioneel schema-validatieregels voor een collectie opgeven door gebruik te maken van de JSON-schema specificatie. Met deze validatieregels kunt u specificeren welke documenten een geldige structuur kunnen hebben voor een bepaalde collectie.
Een typische opdracht om schema-validatie in te stellen zou er als volgt uitzien:
```
db.createCollection(“students”, {
validator: {
$jsonSchema: {
bsonType: “object”,
required: [ “name”, “year”, “major”, “address” ],
properties: {
name: {
bsonType: “string”,
description: “must be a string and is required“
},
year: {
bsonType: “int”,
minimum: 0,
maximum: 3000,
exclusiveMaximum: false,
description: “must be an integer in [ 0, 3000 ] and is required“
},
major: {
enum: [ “Math”, “English”, “Computer Science”, “History”, null ],
description: “can only be one of the enum values and is required“
},
address: {
bsonType: “string”,
description: “must be a string and is required“
}
}
}
}
})
```
In dit voorbeeld definiëren we een collectie “students” schema waarin “name”, “year”, “major” en “address” velden verplicht zijn, waar “name” en “address” velden van het string type zijn en het “year” veld een integer tussen 0 en 3000 moet zijn. Het “major” veld kan alleen de waarden “Math”, “English”, “Computer Science”, “History” of null nemen.
Let op: schema-validatie vindt alleen plaats op het moment van invoegen of bijwerken van documenten. Het heeft geen invloed op bestaande documenten in een collectie.