$setOnInsert (التعيين عند الإدراج)

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

$setOnInsert (التعيين عند الإدراج)

يعيّن $setOnInsert قيم الحقول فقط عندما يُدرج upsert مستندًا جديدًا؛ ويُتجاهل عندما يُطابق مستندًا موجودًا. `{ $setOnInsert: { createdAt: new Date() } }`. مقترنًا بـ upsert: true يسجّل طوابع وقت الإنشاء ويهيئ القيم الافتراضية — دلالات تعيين-عند-الإنشاء وترك-عند-التحديث.

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

📝 الصيغة

{ $setOnInsert: { <field>: <value> } }

⚙️ المعلمات

حقلالحقل الذي يُضبط عند الإدراج فقط.
قيمةالقيمة الأولية، مثل وقت الإنشاء.

القيمة المرجعة:نتيجة التحديث

▶ مثال

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

// $setOnInsert: يُعيّن createdAt فقط عند الإدراج
db.users.updateOne(
  { email: 'alice@example.com' },
  {
    $set: { name: 'Alice' },
    $setOnInsert: { createdAt: new Date() }
  },
  { upsert: true }
)

المخرجات:

// يُسجَّل createdAt عند أول إدراج؛ التحديثات اللاحقة تتركه دون مساس

📌 ملاحظات

📚 دروس ذات صلة

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

Qمتى يسري $setOnInsert؟
Aفقط عندما يُدرج upsert فعلًا؛ يُتجاهل عند تحديث مستند موجود.
Qهل يمكن استخدام $setOnInsert و $set معًا؟
Aنعم؛ يسري $set في كل مرة، بينما يسري $setOnInsert عند الإدراج فقط.
Qهل يجب ضبط upsert: true؟
Aنعم، وإلا فلن يُفعَّل أبدًا في سيناريوهات التحديث الخالصة.
Web-Tutorial.com

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

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

100%