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