$accumulator (مُراكم مخصص)

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

$accumulator (مُراكم مخصص)

يعرّف $accumulator منطق مُراكم مخصص باستدعاءات جافاسكربت — init وaccumulate وmerge وfinalize — داخل $group. يغطي منطق التجميع الذي لا تستطيع المُراكمات المدمجة التعبير عنه. يشغّل جافاسكربت من جانب الخادم وهو أبطأ من المُراكمات الأصلية.

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

📝 الصيغة

{ $accumulator: { init: <function>, accumulate: <function>, accumulateArgs: [ <expression> ], merge: <function>, finalize: <function>, lang: "js" } }

القيمة المرجعة:نتيجة تراكم مخصَّصة (يحدد نوعها الدوال التي تكتبها)

▶ مثال

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

// $accumulator: عد الأسعار المميزة لكل صنف باستخدام Set
db.sales.aggregate([
  { $group: { _id: '$item', uniq: {
    $accumulator: {
      init: function() { return new Set(); },
      accumulate: function(set, v) { set.add(v); },
      accumulateArgs: ['$price'],
      merge: function(a, b) { for (var v of b) a.add(v); },
      finalize: function(set) { return set.size; },
      lang: 'js'
    }
  } }
])

المخرجات:

// عدد الأسعار المميزة لكل صنف

📌 ملاحظات

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

📚 دروس ذات صلة

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

Qما مدى سرعة $accumulator؟
Aيشغّل جافاسكربت من جانب الخادم وهو أبطأ من المُراكمات الأصلية؛ تجنبه متى أمكن.
Qأي الاستدعاءات مطلوبة؟
Ainit وaccumulate وaccumulateArgs مطلوبة؛ وmerge وfinalize اختيارية.
Qماذا لو لم يدعم الخادم جافاسكربت؟
Aيرمي خطأ؛ يجب على المسؤول تمكين النصوص من جانب الخادم أولًا.
Web-Tutorial.com

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

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

100%