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