آموزش مجموعه کوئری های سفارشی در MongoEngine
آموزش مجموعه کوئری های سفارشی در MongoEngine
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش مجموعه کوئری های سفارشی در MongoEngine خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون
به طور پیش فرض ، ویژگی های اشیا موجود در کلاس سند بدون استفاده از فیلتر ، QuerySet را برمی گرداند. با این حال ، شما می توانید روش کلاس را بر روی یک سند تعریف کنید که یک مجموعه داده را اصلاح کند. چنین روشی باید دو آرگومان – doc_cls و queryset را بپذیرد و برای شناسایی باید به () queryset_manager تزئین شود.
1 2 3 4 |
@queryset_manager def qry_method(docs_cls,queryset): …. ---- |
در مثال زیر، کلاس سندی که محصولات نامیده می شود یک روش () biha_prods است که توسطqueryset_manager تزئین شده است. این روش خود فیلترهایی را برای queryset اعمال می کند که فقط اشیایی با قیمت> 20000 برگردانده می شوند. این روش اکنون پرس و جو پیش فرض سند است و ویژگی اشیا کلاس محصولات اسناد فیلتر شده را برمی گرداند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from mongoengine import * con=connect('newdb') class products (Document): ProductID=IntField(required=True) company=StringField() Name=StringField() price=IntField() @queryset_manager def expensive_prods(docs_cls,queryset): return queryset.filter(price__gt=20000) for product in products.expensive_prods(): print ("Name:{} company:{} price:{}".format(product.Name, product.company, product.price)) |
خروجی
1 2 3 4 |
Name:Laptop company:Acer price:25000 Name:TV company:Samsung price:50000 Name:TV company:Philips price:31000 Name:Laptop company:Dell price:45000 |
اگر می خواهید روش های فیلتر کردن اسناد را سفارشی کنید ، ابتدا یک زیر کلاس از کلاس QuerySet اعلام کنید و از آن به عنوان مقدار ویژگی queryset_class در فرهنگ لغت متا استفاده کنید.
مثال زیر از کلاس MyQuerySet به عنوان تعریف queryset سفارشی استفاده می کند. ()myqrymethod در این کلاس اسنادی را فیلتر می کند که قسمت نام آنها با ‘er’ پایان می یابد. در کلاس محصولات ، ویژگی meta به این زیر کلاس queryset به عنوان مقدار ویژگی queryset_class استفاده می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from mongoengine import * con=connect('newdb') class MyQuerySet(QuerySet): def myqrymethod(self): return self.filter(Name__endswith='er') class products (Document): meta = {'queryset_class': MyQuerySet} ProductID=IntField(required=True) company=StringField() Name=StringField() price=IntField() for product in products.objects.myqrymethod(): print ("Name:{} company:{} price:{}".format(product.Name, product.company, product.price)) |
خروجی
1 2 3 |
Name:Router company:Iball price:2000 Name:Scanner company:Cannon price:5000 Name:Printer company:Cannon price:12500 |
لیست جلسات قبل آموزش MongoEngine
- آموزش MongoEngine
- آموزش MongoDB در MongoEngine
- آموزش قطب نما MongoDB در MongoEngine
- آموزش نگاشت کننده اسناد شی در MongoEngine
- آموزش نصب MongoEngine
- آموزش اتصال به پایگاه داده MongoDB در MongoEngine
- آموزش کلاس Document در MongoEngine
- آموزش طرح پویا در MongoEngine
- آموزش کلاس Field در MongoEngine
- آموزش افزودن / حذف سند در MongoEngine
- آموزش استعلام پایگاه داده در MongoEngine
- آموزش فیلترها در MongoEngine
- آموزش عملگرهای Query در MongoEngine
- آموزش روش های QuerySet در MongoEngine
- آموزش مرتب سازی در MongoEngine
دیدگاه شما