Steps to Bypass Schema Validation in MongoDB
- Step 1. Create a Collection with Validation Rules
- Step 2. Bypass the Validation to Insert an Invalid Document
- Step 3. Check Invalid Document Bypass Validation rule
Step 1. Create a Collection with Validation Rules
Let’s create an collection which is used in this article to perform operations and queries.
Query:
use database_name;
db.createCollection( ' Collection_name',
{ validator: { $jsonSchema : { details_about_collection} } });
We define with a particular name and create a Collection with validation rules using JSON schema.Through JSON schema we define the structure for the documents in the collection.
- The createCollection() method is used to create 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 document in a collection.
Example: Create a Employee Collection with Validation Rules.
Query:
Let’s Create an collection called Employee in w3wiki database and applying structure and data integrity rules for employee documents
use w3wiki
db.createCollection("Employee", {
validator: {
$jsonSchema: {
bsonType: "object",
required: ["Name", "joining_year", "Address"],
properties: {
Name: {
bsonType: "string",
description: "Employee's name must be a string",
},
joining_year: {
bsonType: "int",
minimum: 2010,
maximum: 2024,
description:
"Employee's joining year must be an integer between 2010 and 2024",
},
Address: {
bsonType: "string",
description: "Employee's Address must be a string",
},
},
},
},
});
Output:
Explanation: Employee collection is created in w3wiki database. Collection is created using validation rule using JSON schema for the three fields. Fields in the document are [Name, joining_year,Address] .For each field bsontype and description is provided.
Step 2: Bypass the Validation to Insert an Invalid Document
In this step, as per requirements invalid document bypass the validation rule. insert command is used to bypass the validation rules of the collection. bypassDocumentValidation is set to true.
Example:
Following Document is invalid as it don’t satisfy the validation rule for the joining_year field.
Query:
{
Name:"Anil",
joining_year:2005,
Address:"Delhi"
}
Shema validation is bypassed using insert command ,bypassDocumentValidation option is set to true.
Query:
Let’s insert into the Employee Collection which violates the validation rules and requires a bypass to ensure successful insertion.
db.runCommand({
insert: "Employee",
documents: [
{
name: "Anil",
joining_year: 2005,
Address: "Delhi"
}
],
bypassDocumentValidation: true
})
Output:
Explanation: In the above example, document don’t satisfy the validation rule of the collection. It don’t satisfy the condition of the joining_year field. Minimum of the field is set to 2010 but 2005 is used. Hence to bypass the schema validation insert command and bypassDocumentValidation are used.
Step 3: Check Invalid Document Bypass Validation Rule
In this step, check whether invalid document successfully bypass the validation rule. Run the find() method to check the document has been inserted into the collection or not.
Query:
db.Employee.find()
Output:
Explanation: In the above example, Invalid document successfully bypass the schema validation and the find() method is used to check the document which are present in the collection.
Bypass Schema Validation in MongoDB
MongoDB was released in February 2009. It is an open-source document-oriented database and is classified as a NoSQL database. It follows the CAP theorem (Consistency Availability and Partition tolerance). MongoDB stores the records in a document in BSON format. It is an unstructured language and provides horizontal scalability and high-performance, data persistence. It follows the BASE ( Basically Available, Soft State, and Eventual Consistency )properties.
Contact Us