$redact (الترشيح)

آخر تحديث: 2026-10-09

$redact (الترشيح)

يصفّي $redact على مستوى الحقل باستخدام بيانات صلاحية مخزنة في المستندات، مع المتغيرات النظامية $$KEEP و $$PRUNE و $$DESCEND. ينزل $$DESCEND إلى المستندات المضمنة، ويسقط $$PRUNE المستند وشجرته الفرعية، ويُبقي $$KEEP عليه. إنه تصفية من جانب الاستعلام، وليس حدودًا أمنية.

الفئةالمتقدم والتشخيص
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $redact: { $cond: { if: { $eq: [ "$level", "userLevel" ] }, then: "$$PRUNE", else: "$$DESCEND" } } }

⚙️ المعلمات

تعبير الشرطتعبير يُقيَّم عند كل مستوى تداخل، ويُنتج $$KEEP أو $$PRUNE أو $$DESCEND.

القيمة المرجعة:تدفق مستندات مُنقَّح بقواعد الوصول

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $redact: الإبقاء على المحتوى العام فقط
db.employees.aggregate([
  { $redact: {
    $cond: { if: { $eq: ['$access', 'public'] }, then: '$$KEEP', else: '$$DESCEND' }
  } }
])

المخرجات:

// تُزال المستندات أو الحقول غير العامة

📌 ملاحظات

مزيد من الحالات العملية قريبًا.

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qمتى يُستخدم $$DESCEND؟
Aعندما يجتاز المستند الحالي لكن المستندات المضمنة ما زالت تحتاج فحصًا؛ أرجئ القرار إلى الأسفل.
Qهل يمكن لـ $redact أن يحل محل نظام تحكم بالوصول؟
Aيصفّي وقت الاستعلام لكنه ليس حدودًا أمنية؛ يمكن للعملاء الاستعلام عن المجموعة مباشرة ما زالوا.
Qكيف يختلف $redact عن $match؟
Aيصفّي $match مستندات كاملة بشروط المستوى الأعلى؛ بينما يقرر $redact لكل مستوى تداخل بشكل متكرر.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%