insertMany() (إدراج جماعي)
آخر تحديث: 2026-10-09
insertMany() (إدراج جماعي)
تُدرج insertMany() مستندات متعددة في استدعاء واحد، مثل `db.users.insertMany([{ name: 'A' }, { name: 'B' }])`. مع ordered: true (الافتراضي) تُنفَّذ عمليات الإدراج بالترتيب وتتوقف عند أول خطأ؛ أما مع false فتُجرَّب المستندات المتبقية أيضًا. تحتوي النتيجة على acknowledged و insertedIds، التي تربط فهرس كل مستند بـ _id الخاص به. توفر كثيرًا من جولات الطلب مقارنةً بتكرار insertOne()، مما يجعلها الخيار الأول لتهيئة البيانات والترحيلات.
| الفئة | الكتابة |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
db.<collection>.insertMany(<documents>, { ordered: <bool>, writeConcern: <options> })
⚙️ المعلمات
| مصفوفة مستندات | مصفوفة مستندات BSON المراد إدراجها. |
|---|---|
| ordered | اختياري. true يتوقف عند أول خطأ، وfalse يتخطاه ويواصل؛ الافتراضي true. |
| writeConcern | اختياري. ضمان الكتابة (write concern). |
القيمة المرجعة:كائن نتيجة يحتوي على acknowledged وinsertedIds (ربط الفهرس بـ _id).
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// insertMany: إدراج ثلاثة مستخدمين دفعة واحدة
db.users.insertMany([
{ name: 'Alice', age: 21 },
{ name: 'Bob', age: 25 },
{ name: 'Cara', age: 30 }
])
المخرجات:
{
acknowledged: true,
insertedIds: {
'0': ObjectId('64c8a1b20000000000000001'),
'1': ObjectId('64c8a1b20000000000000002'),
'2': ObjectId('64c8a1b20000000000000003')
}
}
📌 ملاحظات
- مع ordered: true، يفشل أحدها فيُسترجَع ما أُدرج من مستندات في تلك الدفعة
- مفاتيح insertedIds هي فهارس المستندات في المصفوفة ('0', '1', ...)
- يجب أن تبقى الدفعة الواحدة ضمن maxWriteBatchSize وحد 16 ميجابايت
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
الوثائق وBSON: حجر الأساس لبيانات MongoDB
إدراج المستندات: شرح مفصل لوظيفتي `insertOne` و`insertMany`
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين insertMany و insertOne؟
Aتكتب insertMany() مستندات كثيرة في جولة طلب واحدة؛ بينما تكتب insertOne() مستندًا واحدًا. لأحمال العمل الضخمة تتفوق insertMany() بفارق كبير على تكرار insertOne().
Qما وظيفة خيار ordered في insertMany؟
Aمع ordered: true تتوقف عمليات الإدراج عند أول خطأ وتُسترجَع الدفعة؛ ومع false تُتخطى المستندات الفاشلة ويستمر إدراج البقية.
Qماذا تُعيد insertMany عندما يفشل بعض المستندات فقط؟
Aتُعيد acknowledged مع insertedIds التي تغطي الفهارس المُدرجة بنجاح فقط؛ وتوجد تفاصيل الفشل في خطأ BulkWriteError المرفوع.