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 } } } }])`. تجمّع النتيجة العدّادات حسب نوع العملية.
| الفئة | الكتابة |
|---|---|
| إصدار MongoDB | 1.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
}
📌 ملاحظات
- أنواع العمليات: insertOne/updateOne/updateMany/replaceOne/deleteOne/deleteMany
- مع ordered: false تُتخطى العمليات الفاشلة ويستمر الباقي
- تقبل updateOne وما يشابهها خيار upsert مضمّنًا
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
إدراج المستندات: شرح مفصل لوظيفتي `insertOne` و`insertMany`
أنماط مونجوس المتقدمة: الأداء والمرونة
التحقق من صحة المخطط: التحقق من صحة البيانات على مستوى قاعدة البيانات
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل bulkWrite أسرع من استدعاء الطرق في حلقة؟
Aتُرسل bulkWrite() طلبًا واحدًا لكل العمليات، وهي أسرع بكثير من تكرار استدعاءات الطرق المفردة — مثالية للترحيلات والاستيرادات.
Qما أنواع العمليات التي تدعمها bulkWrite؟
Aتدعم insertOne و updateOne و updateMany و replaceOne و deleteOne و deleteMany، ويمكن خلطها في استدعاء واحد.
Qكيف يعمل خيار ordered في bulkWrite؟
Aordered: true (الافتراضي) يتوقف عند أول خطأ؛ بينما false يتخطى العمليات الفاشلة ويستمر — مناسب للوظائف الجماعية حيث يكون النجاح الجزئي مقبولًا.