$replaceWith (الاستبدال بـ)
آخر تحديث: 2026-10-09
$replaceWith (الاستبدال بـ)
$replaceWith مثل $replaceRoot لكنه يتحمل نتائج null أو المفقودة، مُبقيًا المستند الأصلي بدلًا من الفشل. يناسب سيناريوهات الرفع-عند-الإمكان. كل شيء آخر يطابق دلالات $replaceRoot.
| الفئة | المراحل الأساسية |
|---|---|
| إصدار MongoDB | 4.2+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $replaceWith: <document expression> }
⚙️ المعلمات
| تعبير مستند | تعبير يستبدل ناتجه المستند؛ وقد يكون null أو مفقودًا. |
|---|
القيمة المرجعة:تدفق مستندات مستبدَل (يُحتفظ بالأصلي عندما تكون النتيجة null)
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $replaceWith: رفع detail عندما يكون موجودًا
db.orders.aggregate([
{ $replaceWith: '$detail' }
])
المخرجات:
// الطلبات التي لديها detail تُخرجه؛ وغيرها تمر دون تغيير
📌 ملاحظات
- نتائج null أو المفقودة تُبقي المستند الأصلي؛ بينما يرمي $replaceRoot خطأ
- يأخذ تعبيرًا مباشرة، بينما يغلّفه $replaceRoot في newRoot
- غالبًا يُدمج مع $mergeObjects لدمج الكائنات المضمنة في جذر جديد
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
مزيد من الحالات العملية قريبًا.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qما الفرق بين $replaceWith و $replaceRoot؟
Aيصدر $replaceWith المستند الأصلي عندما تكون النتيجة null؛ بينما يرمي $replaceRoot خطأ.
Qكيف أدمج عدة حقول في مستند جديد؟
Aاجمعه مع $mergeObjects، مثل { $replaceWith: { $mergeObjects: ['$a', '$b'] } }.
Qهل يُبقي $replaceWith _id؟
Aلا، ما لم يتضمن التعبير _id صراحة.