$replaceRoot (استبدال الجذر)

آخر تحديث: 2026-10-09

$replaceRoot (استبدال الجذر)

يستبدل $replaceRoot المستند بالكامل بمستند مضمّن محدد، ويُستخدم عادة لرفع كائن متداخل مثل detail إلى المستوى الأعلى. تُفقد كل الحقول الأصلية. يرمي خطأ عندما يكون الهدف مفقودًا أو ليس كائنًا؛ احمِ نفسك بـ $ifNull أو استخدم $replaceWith، الذي يُبقي المستند عندما تكون النتيجة null.

الفئةالمراحل الأساسية
إصدار MongoDB1.0+
لغة المثالmongosh (الطرفية)

📝 الصيغة

{ $replaceRoot: { newRoot: <document expression> } }

⚙️ المعلمات

newRootتعبير يُقيَّم ليصبح المستند الجديد؛ يجب أن يكون كائنًا.

القيمة المرجعة:تدفق مستندات جذره newRoot

▶ مثال

نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):

// $replaceRoot: رفع detail إلى الجذر
db.orders.aggregate([
  { $replaceRoot: { newRoot: '$detail' } }
])

المخرجات:

// اختفت حقول الطلب الأصلية؛ يبقى detail فقط
{ "city": "SH", "zip": "200000" }

📌 ملاحظات

📚 دروس ذات صلة

❓ الأسئلة الشائعة

Qما الفرق بين $replaceRoot و $project؟
Aيختار $project أو يحسب حقولًا من الأصل؛ بينما يستبدل $replaceRoot مستندًا جديدًا كليًا.
Qماذا لو كان حقل newRoot غير موجود؟
Aيرمي خطأ. احمِ نفسك بـ $ifNull أو استخدم المتغير $replaceWith.
Qكيف أرفع مستوى تداخل واحدًا بدلًا من استبدال كل شيء؟
Aللرفع الجزئي استخدم تعبيرات المسارات النقطية في $project؛ أما $replaceRoot فيستبدل الجذر كله.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%