MongoDB / دليل حلول تحريري
تشخيص فشل تحقق الوثيقة والنوع والمفتاح الفريد
افصل121 للتحقق عن11000 للتفرد وافحص BSON قبل التحويل أو التجاوز، واحفظ السجلات المرفوضة لإصلاح صريح.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
ترفض الكتابة بـ Document failed validation (121) أو E11000 أو قيمة تبدو صحيحة، وقد يفقد الاستعلام نصوصاً عددية. يخفي عرض JSON اختلاف BSON ولا يثبت تحقق API قبول القيد أو التفرد.
افهم الأسباب المحتملة
- قد يخالف الوجود والنوع والمجال وشكل ما بعد التحديث. وقد يتعارض المفتاح أو الترتيب أو null والغياب. يقيد الجزئي مجموعته فقط، وقد تسبب النسخ والمشغل رفضاً أو إسقاط تقرير صامتاً.
احفظ الفشل المنظم والقصد المرفوض
احفظ الرمز والفهرس أو القاعدة والعملية والطلب مع حجب الحساس. يختلف العلاجان فلا تسميهما تكراراً حميداً. افحص الشكل الكامل بعد التحديث أو الاستبدال؛ قد يحذف المهمل حقلاً مطلوباً من وثيقة صحيحة. احفظ الحدث حتى لا يضيع بالإصلاح.
اقرأ عقد المجموعة والفهرس
افحص القيد والمستوى والإجراء مع الفريد والجزئي والمتناثر والترتيب. تصف القواعد ولا تثبت صلاحية القديم، ولا يحوله القيد رجعياً. المثال قراءة دون جلب إنتاج أو تغيير. عالج نقص المنح بالإجراء لا توسيع التطبيق.
db.getSiblingDB('quay_lab').getCollectionInfos({ name: 'inventory' });
db.getSiblingDB('quay_lab').inventory.getIndexes();
تعتمد التعريفات على العينة وصلاحية الفحص.
افحص BSON الحقيقية والغياب وnull
اجمع بالنوع والإصدار قبل الإصلاح. تفرق $type التعبيرية missing وnull خلاف مساواتها. لا يلزم قبول double أو نص يبدو int، ولا يعد النص تاريخ BSON. حدد التحويل والمنطقة والمجال واعزل الخطأ لا صفراً أو نصاً فارغاً.
db.getSiblingDB('quay_lab').inventory.aggregate([
{ $group: { _id: { version: '$schemaVersion', qtyType: { $type: '$qty' } }, count: { $sum: 1 } } },
{ $sort: { '_id.version': 1, '_id.qtyType': 1 } }
]);
يرصد النوع فقط دون ترحيل أو توزيع مفترض.
أصلح القاعدة الصحيحة دون تجاوزها
صحح الشكل أو رحله بتوافق عند121. ومع التكرار أثبت هوية إعادة آمنة أم تعارضاً حقيقياً. قد يحتاج الاختياري فهرساً جزئياً لا حذفاً عشوائياً. لا يمنع multikey بالضرورة تكراراً داخلياً وللمجزأ قيود مفتاح؛ راجع السياق قبل تعديل القيد أو ضمانات مختلقة.
تحقق من نجاح الإصلاح
اختبر معزولاً الصحيح والغائب وnull والخاطئ والمجال والتكرار والترتيب. احفظ الهوية والحقول، وأعد الحصر والتقرير لمنع إسقاط المبالغ. اختبر الرفض والقبول وتوافق القارئ القديم.
امنع تكرار المشكلة
- طابق API والمشغل والقيد واحفظ الخطأ والحدث، ووثق التفرد والإصدار والتحويل. افحص التعارض قبل الفهرس ولا تمنح تجاوزاً دائماً لإظهار الاستيراد ناجحاً.