By default, it seems that when I create a schema, it’s flexible. Someone can add a new field as follows:
anythingHere: "anything here"
.
if I wanted to make a collection 100% strict, where people cannot add anything new, how do I lock it down?
Note - I am working from the Mongosh shell.
Hello @Kevin_Izevbigie, you can create a “strict schema” using the Schema Validation:
Apologies, I didn’t explain this well.
I have created a schema validation but I do not know how to prevent someone from adding new stuff?
Here is an example:
@Kevin_Izevbigie, you can try this approach, for example:
var schema = {
required: [ "name", "_id" ],
properties: {
_id: { bsonType: "objectId" },
name: { bsonType: "string" }
},
additionalProperties: false // <------ this is the keyword to be used
}
db.createCollection( "strict_coll", { validator: { $jsonSchema: schema } } )
Note that you have to specify the _id
field also in the schema definition. Additional reference: $jsonSchema - Available Keywords
3 Likes
I see, so if additional properties are false, mongo will not automatically create an object id?
MongoDB will create the _id
or you can supply one - as it is a mandatory field in a document.