111- كورس لغة بايثون Python MongoDB شرح – MongoDB Find

مقدمة حول MongoDB Find في Python

تعد MongoDB واحدة من أشهر قواعد البيانات NoSQL، والتي تتميز بقدرتها على تخزين البيانات في شكل مستندات JSON. عند التعامل مع MongoDB باستخدام لغة البرمجة Python، تعتبر عملية البحث أو الاسترجاع واحدة من العمليات الأساسية التي يحتاجها المطورون. توفر مكتبة PyMongo واجهة برمجية متميزة تمكن المطورين من تنفيذ عمليات البحث بسهولة وفعالية.

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

أمثلة عملية على استخدام MongoDB Find في Python

لنفترض أن لدينا قاعدة بيانات لمكتبة تحتوي على مجموعة من الكتب، وكل كتاب يمثله مستند يحتوي على الحقول التالية: العنوان، المؤلف، السنة، والنوع. يمكننا استخدام دالة find() لاسترجاع الكتب بناءً على معايير مختلفة. في هذا المثال، سنقوم باستخدام مكتبة PyMongo للاتصال بقاعدة البيانات وتنفيذ عمليات البحث.

أولاً، سنقوم بإنشاء اتصال بقاعدة البيانات وتحديد المجموعة التي نريد البحث فيها:

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client['library']
collection = db['books']

الآن، لنقم باسترجاع جميع الكتب التي كتبها مؤلف محدد:

author_books = collection.find({'author': 'J.K. Rowling'})
for book in author_books:
    print(book)

يمكننا أيضاً استخدام دالة find() لاسترجاع الكتب التي نشرت بعد سنة معينة:

recent_books = collection.find({'year': {'$gt': 2010}})
for book in recent_books:
    print(book)

وفي حال كنا نرغب في استرجاع كتب من نوع معين وترتيبها بناءً على السنة، يمكننا تطبيق التحديد والفرز كالتالي:

sorted_scifi_books = collection.find({'genre': 'Science Fiction'}).sort('year', 1)
for book in sorted_scifi_books:
    print(book)

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