الإسقاط في MongoDB [مع أمثلة]

نشرت: 2020-09-15

MongoDB هي واحدة من أشهر قواعد البيانات الحديثة للتعامل مع البيانات الضخمة وإدارتها. إنها قاعدة بيانات NoSQL موجهة للمستندات تستخدم مستندات مثل JSON لتسهيل إدارة البيانات.

يمكن بسهولة إحياء أفكار مشاريع MongoDB المختلفة . ومع ذلك ، فإن MongoDB بعض العيوب أيضًا. بشكل افتراضي ، سيعرض أي استعلام عن مستند معين جميع البيانات - يتم حل هذه المشكلة بمساعدة إسقاط MongoDB .

جدول المحتويات

ما هو الإسقاط في MongoDB؟

يحد الإسقاط في MongoDB من إخراج البيانات إلى حقول محددة بدلاً من إظهارها جميعًا. يتم ذلك بمساعدة طريقة البحث (). تقبل طريقة find () معلمة اختيارية تسمح لنا إما بتضمين أو استبعاد حقول إخراج معينة. دعونا نتعمق في كيفية استخدام الإسقاط في MongoDB .

بناء جملة طريقة البحث ()

يتم إجراء الإسقاط في MongoDB بمساعدة طريقة find () ، والتي يكون تركيبها كما يلي:

ديسيبل. collection_name .find ({} ، { field_Key: 1 أو 0 })

في الصيغة أعلاه ، collection_name هي المستند الذي نحتاج إلى استرداد البيانات منه. ثم هناك معلمتان في طريقة find () - الأولى تقبل استعلامًا ، والثانية تستخدم للإسقاط. إن field_Key في بناء الجملة هو اسم الحقل الذي نريد تضمينه أو استبعاده.

نحتاج إلى تمرير قيمة منطقية لكل حقل_ مفتاح . تحدد هذه القيمة ما إذا كنا نريد تضمين الحقل أو استبعاده. إذا أدخلنا 1 مقابل حقل ، فسيتم عرضه في النتائج ، وإذا قمنا بتضمين 0 ، فسيتم إخفاؤه.

قاعدة بيانات المثال

دعنا ننشئ نموذجًا لمستند في قاعدة بيانات حتى نتمكن من الرجوع إليه في هذه المقالة.

db.example.studentData ([

{_id: ObjectId (“59kf63795bc1d”)، student_name: “Alexander”، student_id: 01، student_status: “A”، student_age: 22}

{_id: ObjectId ("59ke62794bc1d") ، اسم_الطالب: "ستيف" ، معرف_طالب: 02 ، حالة_الطالب: "أ" ، عمر_الطالب: 23}

{_id: ObjectId (“59kg73795bf1e”)، student_name: “Luke”، student_id: 03، student_status: “A”، student_age: 21}

{_id: ObjectId (“59kb69995ah1d”)، student_name: “Bravo”، student_id: 04، student_status: “B”، student_age: 25}

])

هذه هي وثيقة قاعدة البيانات الخاصة بنا المسماة المثال الذي سنستخدمه كمرجع في جميع الأمثلة لدينا.

استرجاع البيانات مع وبدون الإسقاط في MongoDB

1. صيغة الاسترجاع بدون إسقاط

استرجاع جميع الحقول (مثل عدم استخدام الإسقاط) للطلاب الذين لديهم حالة student_status: "أ"

db.example.find ({student_status: “A”})

يتوافق هذا مع تحديد * من المثال حيث student_status = استعلام "A" في SQL. سيؤدي استرداد البيانات دون الإسقاط في MongoDB إلى النتيجة التالية:

{"_id": ObjectId (“59kf63795bc1d”)، “student_name”: “Alexander”، “student_id”: 01، “student_status”: “A”، student_age: 22}

{"_id": ObjectId (“59ke62794bc1d”)، “student_name”: “Steve”، “student_id”: 02، “student_status”: “A”، “student_age”: 23}

{“_id”: ObjectId (“59kg73795bf1e”)، “student_name”: “Luke”، “student_id”: 03، “student_status”: “A”، student_age: 21}

يعرض افتراضيًا جميع حقول البيانات حيث يكون student_status = "أ". للحد من حقول الإخراج يمكننا استخدام الإسقاط في MongoDB .

2. صيغة الاسترجاع مع الإسقاط

استرجاع اسم الطالب وحالة الطالب لجميع الطلاب.

db.example.find ({}، {student_name: 1، student_status: 1})

سيظهر هذا النتيجة التالية:

{"_id": ObjectId (“59kf63795bc1d”)، “student_name”: “Alexander”، “student_status”: “A”}

{“_id”: ObjectId (“59ke62794bc1d”)، “student_name”: “Steve”، “student_status”: “A”}

{"_id": ObjectId ("59kg73795bf1e")، "student_name": "Luke"، "student_status": "A"}

{"_id": ObjectId ("59kb69995ah1d") ، student_name: "Bravo" ، student_status: "B"}

يتم عرض _id افتراضيًا أثناء استخدام الإسقاط في MongoDB ما لم نقم بإيقافه.

قمع _id أثناء استخدام الإسقاط في MongoDB

إلغاء _id الافتراضي وإظهار معرف_الطالب واسم_الطالب وحالة_الطلاب لجميع الطلاب.

db.example.find ({}، {_id: 0، student_id: 1، student_name: 1، student_status: 1})

سيؤدي ذلك إلى النتيجة التالية:

{“student_id”: 01، “student_name”: “Alexander”، “student_status”: “A”}

{“student_id”: 02، “student_name”: “Steve”، “student_status”: “A”}

{“student_id”: 03، “student_name”: “Luke”، “student_status”: “A”}

{“student_id”: 04، “student_name”: “Bravo”، student_status: “B”}

3. الجمع بين الشمول والاستبعاد

باستثناء _id و student_id ، بما في ذلك اسم_الطالب وحالة_الطالب لجميع الطلاب.

db.example.find ({}، {_id: 0، student_id: 0، student_name: 1، student_status: 1})

سيؤدي ذلك إلى النتيجة التالية:

خطأ: خطأ: {

"انتظار MS": NumberLong (0) ،

"حسنًا": 0 ،

"errmsg": "لا يمكن أن يكون للإسقاط مزيج من التضمين والاستبعاد." ،

"الكود": 2

}

سيؤدي الجمع بين التضمين والاستبعاد أثناء استخدام إسقاط MongoDB إلى حدوث خطأ لأننا لا نستطيع إجراء كليهما في نفس الاستعلام. يعتبر الحقل _id استثناء لهذه القاعدة.

كنت قد لاحظت أننا استخدمنا مزيجًا من التضمين والاستبعاد في مثالنا السابق حيث قمنا بإلغاء _id وعرضنا بعض الحقول الأخرى ، وقد نجح الأمر بشكل جيد. نظرًا للاستثناء من القاعدة ، فقد استبعدنا _id وقمنا بتضمين باقي الحقول.

4. تحديد الإسقاط في MongoDB عن طريق الاستبعاد

باستثناء حالة _id وحالة الطالب_ لجميع الطلاب وإظهار الحقول الأخرى.

db.example.find ({}، {_id: 0، student_status: 0})

{“student_name”: “ألكساندر”، “student_id”: 01، “student_age”: 22}

{“student_name”: “Steve”، “student_id”: 02، “student_age”: 23}

{“student_name”: “Luke”، “student_id”: 03، “student_age”: 21}

{“student_name”: “برافو”، “student_id”: 04، “student_age”: 25}

يمكنك أيضًا استخدام عوامل الإسقاط الأربعة لتقييد حقول الإخراج ، لكنها غير مدعومة بطريقة البحث (). عوامل الإسقاط التي يمكن استخدامها هي- $ و $ elemMatch و $ slice و $ meta.

اقرأ أيضًا: حالات استخدام العالم الحقيقي لـ MongoDB

خاتمة

باستخدام الإسقاط في MongoDB ، يمكننا التحكم في عرض البيانات في الواجهة الأمامية ، مما يزيد من حالات استخدامها في العالم الحقيقي . حققت MongoDB العديد من الإنجازات في السنوات الأخيرة. لقد جعل هذا النطاق المستقبلي لـ MongoDB مشرقًا ، وتبحث العديد من الشركات عن مطورين مكدس لديهم معرفة بـ MongoDB.

لذلك ، حان الوقت الآن لتضمين مهارات MongoDB في سيرتك الذاتية. ولكن بعد ذلك ، فإن إدارة قاعدة البيانات وحدها لا تكفي في عالم اليوم التنافسي. ومن ثم ، سيكون من المفيد إذا كنت تهدف إلى أن تصبح مطورًا متكاملاً أو تعلم تحليلات الأعمال لفهم وتحليل البيانات التي تديرها ومساعدة الشركات على الأداء الجيد. يمكن أن تساعدك upGrad على البدء.

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

تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

قيادة الثورة التكنولوجية المدفوعة بالبيانات

برنامج الشهادة المتقدم في البيانات الضخمة من معهد IIIT بنغالور