Open In App

Modify Schema Validation in MongoDB

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:

Example:

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:

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.

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

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:

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 } );

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.


Article Tags :