Open In App

Modify Schema Validation in MongoDB

Last Updated : 03 Jan, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

MongoDB was released in February 2009. It is an open-source document-oriented database. It is classified as a NoSQL database. The structure of the data in the collection is dynamic. It follows the CAP theorem (Consistency Availability and Partition tolerance). It is an unstructured language and provides horizontal scalability and high-performance, data persistence. It solved the problem of scalability and agility.

Validation Rule in MongoDB

Validation rules decide the structure of the collection. The documents that satisfy the Validation rule are called valid documents and those that don’t satisfy are invalid documents. Validation rules can be changed at any time. Validation rules are modified using the collMod command in the validator object. Validation level, Validation rules, and Validation action can be also modified.

When should we Modify Schema Validation in MongoDB?

As there are changes in data requirements or the business logic, schema validation rules are modified.

Points to remember:

  1. Initially, valid documents can change to invalid after modification in validation rules if they don’t satisfy the new rule.
  2. Validation rules can be applied to a collection that was defined without validation rules.

Steps to Modify Schema Validation in MongoDB

  1. Create a collection with validation.
  2. Modify the validation schema.

Results After Modify the Schema:

Due to the changes in the validation rules following results occur

  1. Insert an Invalid Document.
  2. Insert a Valid Document.
  3. Handle a Previously Valid Document That Is No Longer Valid.

1. Create a collection with validation.

First define the database which is to be used.Collection is created with validation rules using JSON Schema. Structure for the documents in the collection is defined using validation rules.

Syntax:

use database_name;
db.createCollection( ' Collection_name',
{ validator: { $jsonSchema : { details_about_collection} } });

Explanation:

  • The createCollection() method is used to prepare a collection with a particular name.
  • validator is used to specify the validation rule which contains bsonType, required field, enum, minimum or maximum field.
  • $jsonSchema Used to define the JSON Schema to specify validation rule and structure for a collection.

Example:

Create-Collection-with-validation

Create a collection with validation.

Explanation: In the above example, voter collection is created using validation rules and two valid documents are inserted in it.

2. Modify the Validation Schema.

In this step, changes are made in the validation schema as per the new requirements.

Syntax:

db.runCommand( { collMod : "Collection_name ", 
validator: { $jsonSchema : { details_about_collection_with_changes} } } ) ;

Explanation:

  • runCommand() command is used to execute database commands. It is used for performing operations on the collection ,managing the user, and many more functions.
  • collMod is used to modify the attributes of collections.
  • $jsonSchema is used to set the structure of the document and is used during creation or updating the validation rules.
Modify-the-Validation-Schema

Modify the Validation Schema.

Explanation: In the example mentioned ,validation rules are modified using runCommand method and collMod command. The minimum age in the validation rule is changed from 18 to 21. Validation level for the schema is strict hence the documents that do not satisfy the new validation rules changes to invalid document. There are 3 results that arises due to changes in the validation rule.

Results

1. Insert an Invalid Document

In this result, document is inserted according to the old validation rules. This document is now turned into invalid document as it don’t satisfy new rules.T he invalid document is prevented from insertion into the collection.

  • insertOne() is use to insert the one document in the collection. The insertMany() is used to insert more than one document.
Insert-an-Invalid-Document

Insert an Invalid Document

Explanation: In the above example,user attempts to insert a document according to old validation rule but fails as there are changes in the validation rules. This is one of the result due to changes in the validation rules.

2. Insert a Valid Document

In this result, a document is inserted according to the new validation rules and the document is successfully inserted into the collection.

Insert-a-valid-Document

Insert a Valid Document

Explanation: In the above example, one document is successfully inserted in the collection which is according to new validation rules.

3. Handle a Previously Valid Document That Is No Longer Valid

Database administrators need to handle the documents that are in a collection and have become invalid due to changes in the schema validation rules. These invalid documents are handled based on their validation level specified in the schema. If the validationLevel is strict then it must satisfy the new validation rules, if it is moderate then the document would not need to match. Users can check for the documents that don’t satisfy using the following syntax.

Syntax:

db.runCommand( { validate:"Collection_name" , full :true });

Explanation:

  • runCommand() command is used to execute database commands. It is used for performing operations on the collection ,managing the user, and many more functions.
  • validate is used to check a correctness of the collection.It provide various details such as nInvalidDocument,nIndexes,records,errors ,warning,advice and many more.
Check-for-the-invalid-document

Check for the invalid document.

DBA can update or remove the invalid documents from the collection for the consistency of data.

For Update : db.collection_name.update(  { match_condition } , { $set :{ value_to_update}} ,{multi: true} );

To delete: db.collection_name.deleteMany( { match_condition } );
  • The update() function is used to modify documents based on specified conditions and update parameters.
  • deleteMany() is use to remove more than one document from the collection based on the condition.
Handle-a-Previously-Valid-Document-That-Is-No-Longer-Valid

Handle a Previously Valid Document That Is No Longer Valid

Explanation: In the above code invalid documents are removed. This helps to handle a previous valid document that is no longer valid.

Conclusion

Schema Validation decide the structure of the documents in MongoDB. Validation rules are modified using collMod command. Modified schema results in three outcomes ,which are handled and thus the process is completed. This helps to meet the current requirements, to ensure consistency and correctness to the documents.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads