bulkWrite() (عمليات كتابة جماعية مختلطة)

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

bulkWrite() (عمليات كتابة جماعية مختلطة)

تنفّذ bulkWrite() عدة عمليات كتابة من أنواع مختلطة في استدعاء واحد: insertOne و updateOne و updateMany و replaceOne و deleteOne و deleteMany. كل عملية كائن يحوي نوع العملية مع حمولتها، مثل `db.users.bulkWrite([{ insertOne: { document: { name: 'A' } } }, { updateOne: { filter: { name: 'B' }, update: { $set: { age: 1 } } } }])`. تجمّع النتيجة العدّادات حسب نوع العملية.

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

📝 الصيغة

db.<collection>.bulkWrite(<operations>, { ordered: <bool> })

⚙️ المعلمات

مصفوفة العملياتمصفوفة كائنات عمليات الكتابة، كل منها مثل {insertOne: {document: ...}}.
orderedاختياري. ‏true يتوقف عند أول خطأ، وfalse يواصل؛ الافتراضي true.

القيمة المرجعة:‏BulkWriteResult، كائن عدّاد مجمَّع حسب نوع العملية.

▶ مثال

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

// bulkWrite: إدراج وتحديث وحذف في استدعاء واحد
db.users.bulkWrite([
  { insertOne: { document: { name: 'Dana', age: 28 } } },
  { updateOne: { filter: { name: 'Alice' }, update: { $set: { age: 23 } } } },
  { deleteOne: { filter: { name: 'Bob' } } }
])

المخرجات:

{
  acknowledged: true,
  insertedCount: 1,
  matchedCount: 1,
  modifiedCount: 1,
  deletedCount: 1
}

📌 ملاحظات

📚 دروس ذات صلة

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

Qهل bulkWrite أسرع من استدعاء الطرق في حلقة؟
Aتُرسل bulkWrite() طلبًا واحدًا لكل العمليات، وهي أسرع بكثير من تكرار استدعاءات الطرق المفردة — مثالية للترحيلات والاستيرادات.
Qما أنواع العمليات التي تدعمها bulkWrite؟
Aتدعم insertOne و updateOne و updateMany و replaceOne و deleteOne و deleteMany، ويمكن خلطها في استدعاء واحد.
Qكيف يعمل خيار ordered في bulkWrite؟
Aordered: true (الافتراضي) يتوقف عند أول خطأ؛ بينما false يتخطى العمليات الفاشلة ويستمر — مناسب للوظائف الجماعية حيث يكون النجاح الجزئي مقبولًا.
Web-Tutorial.com

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

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

100%