MongoDB مستند الاستعلام: db.collection.find() مع مثال

⚡ ملخص ذكي

MongoDB تسترجع عمليات الاستعلام عن المستندات السجلات من مجموعة باستخدام الدالة db.collection.find(). تُرجع هذه الدالة جميع المستندات افتراضيًا، وتقبل معايير التصفية مثل مطابقة الحقول وعامل $gt، وتُنسق النتائج باستخدام الأمر forEach(printjson).

  • 🔍 دالة البحث () تسترجع الدالة db.collection.find() المستندات من MongoDB مجموعة، تُعيد كل مستند عند عدم تحديد أي عامل تصفية.
  • 🎯 معايير التصفية: يؤدي تمرير كائن استعلام، مثل {EmployeeName: “Smith”}، إلى إرجاع المستندات التي تطابق الشرط فقط.
  • سؤال Operaتورس: تعمل عوامل الاختيار مثل $gt و $lt و $in على تحسين النتائج، على سبيل المثال العثور على الموظفين الذين لديهم معرف أكبر من 2.
  • 🖨️ Readable الإخراج: يؤدي استخدام forEach(printjson) بشكل متسلسل إلى طباعة كل مستند يتم إرجاعه بتنسيق JSON نظيف.
  • 🧾 الإسقاط: تُستخدم وسيطة ثانية للدالة find() لتحديد الحقول التي سيتم تضمينها أو استبعادها من النتائج.

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

MongoDB يوفر وظيفة تسمى db.collection.find () والذي يستخدم لاسترجاع الوثائق من أ MongoDB قاعدة البيانات.

خلال هذا MongoDB البرنامج التعليمي للاستعلام، سترى كيف يتم استخدام هذه الوظيفة بطرق مختلفة لتحقيق الغرض من استرداد المستندات.

ما هي وظيفة db.collection.find() في MongoDB?

تُعد طريقة db.collection.find() الطريقة الأساسية لقراءة المستندات من MongoDB عند استدعاء هذه الدالة بدون أي وسيط، فإنها تُعيد جميع المستندات الموجودة في المجموعة. أما عند تمرير كائن استعلام، فإنها تُعيد فقط المستندات التي تُطابق المعايير المُحددة، مما يُتيح لك استرجاع البيانات التي تحتاجها بدقة.

تُعيد هذه الطريقة مؤشرًا، وهو عبارة عن مُؤشِّر إلى مجموعة النتائج وليس إلى المستندات نفسها. عادةً ما يتم المرور عبر المؤشر لعرض النتائج، وغالبًا ما يُستخدم forEach(printjson) لعرض كل مستند بصيغة JSON قابلة للقراءة. إذا كنت تحتاج إلى سجل واحد فقط، MongoDB كما توفر الدالة findOne()، التي تُعيد أول مستند مطابق بدلاً من المؤشر. وتُغطي الدالتان find() و findOne() معًا معظم عمليات القراءة في MongoDB قاعدة البيانات، بدءًا من جلب مجموعات كاملة وحتى التصفية حسب قيم حقول محددة.

MongoDB الاستعلام الأساسي Operaستعقد

الأساسية MongoDB تغطي مشغلات الاستعلام العمليات البسيطة مثل الحصول على جميع المستندات في MongoDB مجموعة. دعونا نلقي نظرة على مثال db.collection.find لكيفية تحقيق ذلك.

سيتم تشغيل جميع التعليمات البرمجية الخاصة بنا في MongoDB Javaسيناريو قذيفة الأوامر. ضع في اعتبارك أن لدينا مجموعة تسمى "الموظف" في موقعنا MongoDB قاعدة البيانات ونقوم بتنفيذ الأمر أدناه.

MongoDB الاستعلام الأساسي Operaستعقد
MongoDB عملية الاستعلام الأساسية

Code التفسير:

  1. الموظف هو اسم المجموعة في MongoDB قاعدة بيانات
  2. استخدم MongoDB يعد استعلام البحث وظيفة مضمنة تُستخدم لاسترداد المستندات الموجودة في المجموعة.

إذا تم تنفيذ الأمر بنجاح، سيتم عرض الناتج التالي لـ MongoDB العثور على مثال

الإخراج:

MongoDB الاستعلام الأساسي Operaستعقد

يُظهر الإخراج جميع المستندات الموجودة في المجموعة.

يمكننا أيضًا إضافة معايير إلى استعلاماتنا حتى نتمكن من جلب المستندات بناءً على شروط معينة.

MongoDB مثال الاستعلام – 1

دعونا نلقي نظرة على اثنين من MongoDB الاستعلام عن أمثلة لكيفية تحقيق ذلك.

db.Employee.find({EmployeeName : "Smith"}).forEach(printjson);

Code التفسير:

  1. نريد هنا البحث عن موظف اسمه "سميث" في المجموعة، ومن ثم نقوم بإدخال معايير التصفية باسم اسم الموظف: "سميث"

إذا تم تنفيذ الأمر بنجاح، سيتم عرض الناتج التالي

الإخراج:

MongoDB مثال الاستعلام

يُظهر الإخراج أنه يتم إرجاع المستند الذي يحتوي على "Smith" كاسم الموظف فقط.

MongoDB مثال الاستعلام – 2

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

db.Employee.find({Employeeid : {$gt:2}}).forEach(printjson);

Code التفسير:

  1. هنا نريد أن نجد جميع الموظفين الذين يكون معرفهم أكبر من 2. يسمى $gt عامل اختيار الاستعلام، وكل ما يعنيه هو استخدام تعبير أكبر من.

إذا كان MongoDB تم تنفيذ أمر تحديد الحقول بنجاح، وسيتم عرض الناتج التالي

الإخراج:

MongoDB مثال الاستعلام

يتم إرجاع جميع المستندات التي يكون فيها معرف الموظف أكبر من 2.

MongoDB سؤال Operaالاختصاصات

MongoDB تُستخدم عوامل تحديد الاستعلام داخل معايير البحث لتصفية المستندات. تتيح لك هذه العوامل مطابقة النطاقات والقوائم والنفي بدلاً من القيم المطابقة تمامًا. يوضح الجدول أدناه أكثر العوامل شيوعًا:

المُشغل معنى مثال
جي تي اعظم من {Employeeid: {$gt: 2}}
لتر Less من {Employeeid: {$lt: 5}}
gte دولار أكبر من أو يساوي {age: {$gte: 18}}
$ لت Less من أو يساوي {age: {$lte: 60}}
$ ne لا يساوي {status: {$ne: “active”}}
$ in يطابق أي قيمة في القائمة {dept: {$in: [“HR”,”IT”]}}

يمكنك أيضًا دمج الشروط باستخدام $and و$or لإنشاء استعلامات أكثر دقة. يضمن اختيار المعامل المناسب كفاءة الاستعلامات وإرجاع المستندات التي يحتاجها تطبيقك فقط.

كيفية استخدام الإسقاط مع دالة البحث ()

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

لتضمين حقول محددة فقط، عيّن قيمتها إلى 1 في كائن الإسقاط. يُرجع الاستعلام التالي حقل اسم الموظف فقط لكل مستند:

db.Employee.find({}, {EmployeeName: 1}).forEach(printjson);

MongoDB يُعيد هذا البرنامج دائمًا حقل _id ما لم تقم باستبعاده صراحةً. لإخفائه، عيّن قيمة _id إلى 0.

db.Employee.find({}, {EmployeeName: 1, _id: 0}).forEach(printjson);

يمكنك أيضًا استبعاد الحقول بدلاً من تضمينها عن طريق تعيين قيمتها إلى 0. على سبيل المثال، يُرجع الاستعلام أدناه جميع الحقول باستثناء حقل Employeeid:

db.Employee.find({}, {Employeeid: 0}).forEach(printjson);

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

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

تُعيد الدالة find() مؤشرًا إلى جميع المستندات التي تُطابق الاستعلام، لذا يُمكنها إرجاع نتائج متعددة. أما الدالة findOne() فتُعيد أول مستند مُطابق فقط ككائن واحد، أو قيمة فارغة (null) إذا لم يُطابق أي مستند.

قم بربط دالتي sort() و limit() بمؤشر find(). على سبيل المثال، تُعيد الدالة find().sort({age:1}).limit(5) أصغر خمسة سجلات. استخدم القيمة 1 للترتيب التصاعدي و -1 للترتيب التنازلي في دالة sort().

استخدم الدالة countDocuments() مع نفس عامل التصفية، على سبيل المثال db.Employee.countDocuments({EmployeeName:”Smith”}). تُعيد هذه الدالة عدد المستندات المطابقة دون استرجاعها، مما يُعد أسرع من قراءة مجموعة النتائج الكاملة وحسابها.

بإمكان الذكاء الاصطناعي تحويل طلب مكتوب بلغة بسيطة إلى استعلام باستخدام دالة find() مع المعاملات والإسقاطات الصحيحة، وشرح كل جزء منه. اختبر الاستعلام دائمًا على بيانات تجريبية قبل تشغيله في بيئة الإنتاج.

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

تلخيص هذه التدوينة بـ: