$replaceAll (استبدال كل التطابقات)
آخر تحديث: 2026-10-09
$replaceAll (استبدال كل التطابقات)
يستبدل $replaceAll كل ظهور لسلسلة فرعية بسلسلة معينة — مثالي لتنظيف البيانات الجماعي أو توحيد المحددات. يجب أن يكون find غير فارغ وإلا رُمي خطأ؛ وعند غيابه تُعاد السلسلة المدخلة دون تغيير. وهو استبدال لفظي، ويختلف عن $replaceOne في استبدال الكل بدل الأول. استخدم $regexReplace لمطابقة الأنماط. المدخل الفارغ أو المفقود يُرجع null.
| الفئة | النص |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $replaceAll: { input: <string-expression>, find: <find>, replacement: <replacement> } }
⚙️ المعلمات
| input | مطلوب؛ النص المراد معالجته. |
|---|---|
| find | مطلوب؛ نص بحث غير فارغ. |
| replacement | مطلوب؛ نص الاستبدال. |
القيمة المرجعة:النص المستبدَل؛ null إذا كان الإدخال null.
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $replaceAll: إزالة كل الشرطات من أرقام الهواتف
db.users.aggregate([
{ $project: { clean: { $replaceAll: { input: '$phone', find: '-', replacement: '' } } } }
])
المخرجات:
{ "_id": 1, "clean": "13800138000" }
{ "_id": 2, "clean": "13900139000" }
📌 ملاحظات
- يستبدل كل ظهور — النظير المقابل لـ $replaceOne
- find الفارغ يُسبب خطأً
- أكثر كفاءة من تكرار $replaceOne في حلقة
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق عن $replaceOne؟
A$replaceOne يستبدل الأول؛ و $replaceAll يستبدل كل ظهور.
Qهل يعمل مع التعبيرات النمطية؟
Aلا — استخدم $regexReplace للتعبيرات النمطية.
Qهل يمكن أن يكون البديل فارغًا؟
Aنعم — يحذف كل ظهورات find.