$substr (سلسلة فرعية)
آخر تحديث: 2026-10-09
$substr (سلسلة فرعية)
يستخرج $substr سلسلة فرعية تبدأ من موضع معين بطول معين. منذ MongoDB 3.4 أصبح $substr اسمًا بديلًا لـ $substrCP، إذ يعدّ المواضع بنقاط رموز يونيكود (تقريبًا الأحرف)، لذا فهو آمن للنصوص متعددة البايت مثل الصينية والرموز التعبيرية — دون أحرف ممزقة. يبدأ start من الصفر؛ والبداية السالبة تُرجع سلسلة فارغة، والطول السالب يُرجع كل ما تبقى من start فصاعدًا.
| الفئة | النص |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $substr: [ <string-expression>, <start>, <length> ] }
⚙️ المعلمات
| سلسلة نصية | مطلوب؛ تعبير النص المصدر. |
|---|---|
| موضع البداية | عدد صحيح مطلوب يبدأ من الصفر؛ والقيمة السالبة تُنتج نصًا فارغًا. |
| الطول | عدد صحيح مطلوب؛ القيمة السالبة تُرجع من start إلى النهاية. |
القيمة المرجعة:النص الفرعي المستخرج؛ null إذا كان أي معامل null.
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $substr: أول 3 أرقام من أرقام الهواتف
db.users.aggregate([
{ $project: { code: { $substr: [ '$phone', 0, 3 ] } } }
])
المخرجات:
{ "_id": 1, "code": "138" }
{ "_id": 2, "code": "139" }
📌 ملاحظات
- اسم بديل لـ $substrCP منذ 3.4 — قائم على نقاط الرموز وآمن متعدد البايت
- البداية السالبة تعطي سلسلة فارغة؛ والطول السالب يعطي البقية
- للقص القائم على بايتات UTF-8 استخدم $substrBytes
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qهل $substr و $substrCP متماثلان؟
Aمنذ 3.4 أصبح $substr اسمًا بديلًا لـ $substrCP — سلوك متطابق.
Qهل يتسبب قص الصينية في نص مشوّه؟
Aلا — يعدّ نقاط الرموز، لذا الصينية آمنة.
Qهل يمكن أن تكون start سالبة؟
Aنعم — البداية السالبة تُرجع سلسلة فارغة.