$setDifference (فرق المجموعات)

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

$setDifference (فرق المجموعات)

يُرجع $setDifference العناصر الموجودة في المصفوفة الأولى والغائبة عن الثانية، مع إزالة التكرارات. الاستخدامات النموذجية: إيجاد منتجات اشتراها المستخدم لكن لم يفضّلها، أو مقارنة قائمتي أسماء. يجب أن تكون الوسيطتان مصفوفتين، وتُتجاهل عناصر null. لا يوجد ترتيب مضمون للنتيجة، ولا تُحفظ المواضع النسبية بعد إزالة التكرار. تعامل عوامل المجموعات المصفوفات كمجموعات، مكوّنة عائلة مع $setIntersection و $setUnion.

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

📝 الصيغة

{ $setDifference: [ <arrayA>, <arrayB> ] }

⚙️ المعلمات

مصفوفة Aالمجموعة المطروح منها.
مصفوفة Bالمجموعة المراد طرحها.

القيمة المرجعة:مصفوفة (بدون تكرار) للعناصر الموجودة في A وليس في B؛ null عندما يكون أي معامل null

▶ مثال

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

// $setDifference: مشترى ولم يُفضَّل
db.users.aggregate([
  { $project: {
      notFav: { $setDifference: ['$bought', '$favorites'] }
  } }
])

المخرجات:

{ '_id': 1, 'notFav': [ 'skuB' ] }

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qهل النتيجة منزوعة التكرار؟
Aنعم — بموجب دلالات المجموعات يظهر كل عنصر مرة واحدة.
Qهل تحافظ النتيجة على ترتيب المدخل؟
Aلا ضمان — لا تعتمد على الترتيب في الخطوات اللاحقة.
Qكيف يختلف عن $filter؟
A$filter يزيل بالشرط لكل عنصر؛ و $setDifference يحسب فرق مجموعة مقابل مصفوفة أخرى.
Web-Tutorial.com

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

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

100%