اذهب إلى المحتوى

السؤال

نشر

لدي مجموعة من المستندات بالهيئة التالية:

{ 'users' :
  [
    { 'username' : 'user1', 'value' : 5 },
    { 'username' : 'user2',  'value' : 10 },
    { 'username' : 'user3', 'value' : 2 }
  ] 
}

وأرغب بإضافة عنصر جديد إلى المصفوفة users فقط في حال لم يكن الاسم username موجوداً، أي بغض النظر عن قيمة الحقل value.

فهل من الممكن تحقيق ذلك باستخدام addToSet أم يجب علي إضافة أمر آخر إلى الاستعلام؟

Recommended Posts

  • 1
نشر

من أبسط الطرق التي يمكنك استخدامها هي منع الإضافة أو التحديث في حال وجود القيمة username ضمن المصفوفة:

update(
    {_id: id, 'users.username': {$ne: 'some_value_here'}}, 
    {$push: {users: {'name': 'some_value_here', 'value': 11}}})

بحيث يتم أولاً إجراء استعلام على المستندات التي لا تحوي هذه القيمة ضمن الحقل username وبعدها تتم الإضافة، أما في حال وجود أي مستند يحوي هذه القيمة فلن يتحقق الاستعلام وبالتالي لن تتم الإضافة على المجموعة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...