Tamim Fahed نشر 19 يونيو 2021 أرسل تقرير نشر 19 يونيو 2021 لدي مجموعة من المستندات والتي تحوي ضمنها أغراض objects أخرى بالهيئة التالية: { email: 'test@test.com', attributes: { ips: ['127.0.0.1','193.82.143.12','122.13.240.5'], serial: 1122334, role: 'user' } } حاولت استخدام التابع $unset للقيام بحذف حقل فرعي من الغرض attributes، لكنه يتم تطبيقه فقط على الحقول الأساسية للمستند ولا أستطيع من خلاله الوصول إلى حقول فرعية. كيف أستطيع الوصول وحذف الحقل ips من جميع مستندات هذه المجموعة؟ اقتباس
1 Sam Ahw نشر 19 يونيو 2021 أرسل تقرير نشر 19 يونيو 2021 يجب عليك التأكد من استخدام التابع unset$ بشكل صحيح بإضافة رقم (1) للدلالة على الحقل بدلاً من كتابة اسم الحقل بشكل منفرد، ولحذف هذه الحقول من جميع المستندات نقوم بوضع شرط فارغ للاستعلام { } مع التأكد من إضافة الخاصية multi وإعطائها القيمة true: update({}, {$unset: {ips:1}} , {multi: true}); في حال لم تعمل الطريقة السابقة، يمكنك أيضاً الوصول إلى الحقل الفرعي من خلال المسارات (استخدام النقطة . ) عن طريق ذكر اسم الحقل الأساسي ثم وضع علامة النقطة ثم الحقل الفرعي، وبهذه الطريقة تستطيع الوصول لأي حقل فرعي مهما بلغ العمق. بالشكل التالي: update( {}, { $unset: {'attributes.ips':1}}, false, true ) 1 اقتباس
0 سمير عبود نشر 19 يونيو 2021 أرسل تقرير نشر 19 يونيو 2021 تأكد أنك تستخدم التابع unset بشكل صحيح فالحقل الذي تريد حذفه هو حقل فرعي لذلك يجب إخبار MongoDB بذلك بإستخدام dot notation بهذا الشكل: .update( {}, { $unset: {'attributes.ips':1}}, {multi: true} ) كما يُمكن أيضاً إستخدام التابع updateMany لتعديل عدة مُستندات: .updateMany( {}, { $unset: {'attributes.ips':1}} ) اقتباس
-1 عبدالله عبدالرحمن11 نشر 19 يونيو 2021 أرسل تقرير نشر 19 يونيو 2021 يمكنك إستخدام unset$ كالآتي ، لتغيير role من user الى admin db.collectionName.update({},{"$unset":{"attributes.role":"admin"}}) أما إذا أردت تحديث مستندات متعددة فيمكنك إستخدام هذا الأمر db.collectionName.update({},{"$unset":{"attributes.role":"admin"}},{"multi":true}) اقتباس
السؤال
Tamim Fahed
لدي مجموعة من المستندات والتي تحوي ضمنها أغراض objects أخرى بالهيئة التالية:
{ email: 'test@test.com', attributes: { ips: ['127.0.0.1','193.82.143.12','122.13.240.5'], serial: 1122334, role: 'user' } }
حاولت استخدام التابع $unset للقيام بحذف حقل فرعي من الغرض attributes، لكنه يتم تطبيقه فقط على الحقول الأساسية للمستند ولا أستطيع من خلاله الوصول إلى حقول فرعية.
كيف أستطيع الوصول وحذف الحقل ips من جميع مستندات هذه المجموعة؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.