MongoDB में JSON स्कीमा वैलिडेटर का उपयोग करके दस्तावेज़ वैलिडेशन लागू करना
MongoDB 3.6+ में createCollection() के साथ validator विकल्प का उपयोग करके JSON स्कीमा आधारित दस्तावेज़ वैलिडेशन लागू करें।
वैलिडेशन के साथ संग्रह बनाना
> db.createCollection( "demo437" , {
validator: { $jsonSchema: {
bsonType: "object",
required: [ "FirstName", "LastName" ],
properties: {
FirstName: {
bsonType: "string",
description: "This is required"
},
LastName: {
bsonType: "string",
description: "This is required"
}
}
}}
})
{ "ok" : 1 }
वैलिडेशन टेस्ट - अमान्य दस्तावेज़ (LastName संख्या है)
> db.demo437.insertOne({"FirstName":"John","LastName":1234});
WriteError: Document failed validation
{ "index" : 0, "code" : 121, "errmsg" : "Document failed validation",
"op" : { "_id" : ObjectId("5e7757ebbbc41e36cc3cae9a"), "FirstName" : "John", "LastName" : 1234 } }
वैध दस्तावेज़ इन्सर्ट
> db.demo437.insertOne({"FirstName":"John","LastName":"Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e7757f7bbc41e36cc3cae9b") }
> db.demo437.insertOne({"FirstName":"David","LastName":"Miller"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e775816bbc41e36cc3cae9d") }
अमान्य दस्तावेज़ (FirstName संख्या है)
> db.demo437.insertOne({"FirstName":9887,"LastName":"Miller"});
WriteError: Document failed validation
{ "index" : 0, "code" : 121, "errmsg" : "Document failed validation", ... }
सभी वैध दस्तावेज़ देखना
> db.demo437.find();
आउटपुट:
{ "_id" : ObjectId("5e7757f7bbc41e36cc3cae9b"), "FirstName" : "John", "LastName" : "Smith" }
{ "_id" : ObjectId("5e775816bbc41e36cc3cae9d"), "FirstName" : "David", "LastName" : "Miller" }
JSON स्कीमा वैलिडेशन मुख्य विशेषताएं:
| कीवर्ड | उद्देश्य |
|---|---|
bsonType | फील्ड का डेटा टाइप (string, int, double, bool, array, object, date, etc.) |
required | आवश्यक फील्ड्स का ऐरे |
properties | फील्ड-स्तरीय स्कीमा परिभाषा |
enum | अनुमत मानों की सूची |
minimum/maximum | संख्यात्मक रेंज |
minLength/maxLength | स्ट्रिंग लंबाई |
pattern | रेगेक्स पैटर्न |
वैलिडेशन लेवल:
validationLevel: "strict"(डिफ़ॉल्ट) - सभी इन्सर्ट/अपडेट पर लागूvalidationLevel: "moderate"- मौजूदा अमान्य दस्तावेज़ों को छोड़कर नए पर लागूvalidationAction: "error"(डिफ़ॉल्ट) - अस्वीकार करेंvalidationAction: "warn"- चेतावनी लॉग करें लेकिन अनुमति दें
मौजूदा संग्रह पर वैलिडेशन जोड़ना:
db.runCommand({
collMod: "demo437",
validator: { $jsonSchema: {...} },
validationLevel: "moderate"
})