$jsonSchema (التحقق من مخطط JSON)
آخر تحديث: 2026-10-09
$jsonSchema (التحقق من مخطط JSON)
يتحقق $jsonSchema من بنية المستند وفق معيار مسودة JSON Schema، ويمكن استخدامه كمسند استعلام أو كمدقق للمجموعة. `{ $jsonSchema: { required: ['name'], properties: { age: { bsonType: 'int' } } } }`. يدعم الحقول المطلوبة وقيود الأنواع وأنماط الخصائص، لكنه لا يمكنه استخدام الفهارس العادية ويكلف كثيرًا على المجموعات الكبيرة — وهو الأنسب لفحوصات جودة البيانات.
| الفئة | العنصر والتقييم |
|---|---|
| إصدار MongoDB | 3.6+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $jsonSchema: { required: [ <field name> ], properties: { <property>: { <constraint> } } } }
⚙️ المعلمات
| كائن المخطط | مستند JSON Schema بمفاتيح مثل required وproperties وbsonType. |
|---|
القيمة المرجعة:مؤشر المستندات المطابقة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $jsonSchema: name مطلوب، وage يجب أن يكون int
db.users.find({
$jsonSchema: {
required: ['name'],
properties: {
age: { bsonType: 'int' }
}
}
})
المخرجات:
// يُرجع المستندات التي يوجد فيها name ويكون age من نوع int (الحقل age غير المُعلن يمر أيضًا)
📌 ملاحظات
- استخدم bsonType لتثبيت أنواع BSON (int، string، objectId وغيرها)
- لا يمكنه استخدام الفهارس العادية؛ تجنب استخدامه المتكرر على المجموعات الكبيرة
- نفس الصيغة تغذي مدققات المجموعة (خيار validator في db.createCollection)
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل يمكن لـ $jsonSchema التحقق من الكائنات المتداخلة؟
Aنعم، ضع properties داخل properties للتحقق مستوى بمستوى.
Qما الفرق بين $jsonSchema و $type؟
Aيختبر $type نوع حقل واحد؛ بينما يتحقق $jsonSchema من بنية المستند بالكامل عبر required والتداخل والحقول المتعددة.
Qهل يمكنني استخدام $jsonSchema عند إنشاء مجموعة؟
Aنعم، مرر validator: { $jsonSchema: {...} } إلى db.createCollection كمدقق عند الكتابة.