$toObjectId (التحويل إلى ObjectId)
آخر تحديث: 2026-10-09
$toObjectId (التحويل إلى ObjectId)
يحوّل $toObjectId سلسلة سداسية عشرية من 24 حرفًا إلى ObjectId، التحويل الأكثر شيوعًا لعمليات الربط. الاستخدامات النموذجية: تحويل سلاسل المعرّفات المستوردة من CSV أو API إلى ObjectId لـ $lookup، أو مقارنة قيم _id النصية مع ObjectId في $match. يجب أن تكون السلسلة صيغة ObjectId صالحة وإلا رُمي خطأ؛ ويبقى null null. فضّل $convert مع onError لحماية المدخلات غير الصالحة.
| الفئة | المجموعة والشرط والتحويل |
|---|---|
| إصدار MongoDB | 1.0+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $toObjectId: <expression> }
⚙️ المعلمات
| تعبير | نص سادس عشري مكوَّن من 24 حرفًا. |
|---|
القيمة المرجعة:قيمة ObjectId؛ null عندما يكون الإدخال null
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $toObjectId: تحويل معرّف نصي للربط
db.orders.aggregate([
{ $project: {
uid: { $toObjectId: '$userIdStr' }
} }
])
المخرجات:
{ '_id': 1, 'uid': { '$oid': '64b7f1c2e4b0a1b2c3d4e5f6' } }
📌 ملاحظات
- يجب أن تكون السلسلة 24 حرفًا سداسيًا عشريًا؛ وأي شيء آخر يُسبب خطأً
- يبقى null null
- لـ $lookup، يجب أن يتشارك الطرفان نوعًا واحدًا — حوّل قبل الربط
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qماذا يحدث مع سلسلة غير صالحة؟
Aيُسبب خطأً؛ و $convert onError يُرجع بديلًا بدل ذلك.
Qلماذا يفشل $lookup في المطابقة؟
Aعادةً اختلاف أنواع — أحد الطرفين سلسلة والآخر ObjectId؛ وحّد بـ $toObjectId أولًا.
Qماذا عن سلسلة فارغة؟
Aيُسبب خطأً لا null؛ عالجها بـ $ifNull أولًا.