$match (تصفية المستندات)

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

$match (تصفية المستندات)

يصفّي $match المستندات بشرط استعلام، ممررًا المطابقة منها فقط إلى المراحل اللاحقة. وهو المكافئ التجميعي لمسند استعلام find(). ضع $match في أقرب موضع ممكن — يمكنه استخدام الفهارس ويقلل عدد المستندات الداخلة إلى المراحل اللاحقة، مما يجعله القاعدة رقم 1 لأداء التجميع.

الفئةالمراحل الأساسية
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $match: { <query> } }

⚙️ المعلمات

شرط الاستعلامنفس تعبير الاستعلام الخاص بـ find()، ويدعم معاملات المقارنة/المنطقية/العناصر.

القيمة المرجعة:تدفق مستندات مُرشَّح (للمرحلة التالية)

▶ مثال

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

// $match: الطلبات ذات الحالة A فقط
db.orders.aggregate([
  { $match: { status: "A" } },
  { $group: { _id: "$cust_id", total: { $sum: "$amount" } } }
])

المخرجات:

// يُرجع الإجمالي لكل عميل
{ "_id": "A123", "total": 250 }
{ "_id": "B456", "total": 130 }

📌 ملاحظات

📚 دروس ذات صلة

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

Qما الفرق بين $match و find()؟
Aشروط الاستعلام متطابقة، لكن $match يُستخدم داخل خط أنابيب التجميع ويمرر النتائج إلى المرحلة التالية.
Qهل يمكن وضع $match في منتصف خط الأنابيب؟
Aنعم، لكنك تخسر تحسين الفهرس. قاعدة أساسية: ضعه أولًا كلما أمكن.
Qلماذا يوضع $match في بداية خط الأنابيب؟
Aالتصفية المبكرة تقلل حجم البيانات الممررة إلى المراحل اللاحقة وتتيح لـ $match استخدام فهرس، مما يعزز الأداء بشكل كبير. وضعه لاحقًا ما زال يعمل لكن دون استخدام الفهارس.
Web-Tutorial.com

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

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

100%