آموزش مجموعه کوئری های سفارشی در MongoEngine

3 سال پیش
آموزش مجموعه کوئری های سفارشی در MongoEngine

آموزش مجموعه کوئری های سفارشی در MongoEngine

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش مجموعه کوئری های سفارشی در MongoEngine خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون

به طور پیش فرض ، ویژگی های اشیا موجود در کلاس سند بدون استفاده از فیلتر ، QuerySet را برمی گرداند. با این حال ، شما می توانید روش کلاس را بر روی یک سند تعریف کنید که یک مجموعه داده را اصلاح کند. چنین روشی باید دو آرگومان – doc_cls و queryset را بپذیرد و برای شناسایی باید به () queryset_manager تزئین شود.

@queryset_manager
   def qry_method(docs_cls,queryset):
       ….
       ----

 

در مثال زیر، کلاس سندی که محصولات نامیده می شود یک روش () biha_prods است که توسطqueryset_manager تزئین شده است. این روش خود فیلترهایی را برای queryset اعمال می کند که فقط اشیایی با قیمت> 20000 برگردانده می شوند. این روش اکنون پرس و جو پیش فرض سند است و ویژگی اشیا  کلاس محصولات اسناد فیلتر شده را برمی گرداند.

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))

 

خروجی

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 استفاده می شود.

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))

 

خروجی

Name:Router company:Iball price:2000
Name:Scanner company:Cannon price:5000
Name:Printer company:Cannon price:12500

 

منبع.

 

لیست جلسات قبل آموزش MongoEngine

  1. آموزش MongoEngine
  2. آموزش MongoDB در MongoEngine
  3. آموزش قطب نما MongoDB در MongoEngine
  4. آموزش نگاشت کننده اسناد شی در MongoEngine
  5. آموزش نصب MongoEngine
  6. آموزش اتصال به پایگاه داده MongoDB در MongoEngine
  7. آموزش کلاس Document در MongoEngine
  8. آموزش طرح پویا در MongoEngine
  9. آموزش کلاس Field در MongoEngine
  10. آموزش افزودن / حذف سند در MongoEngine
  11. آموزش استعلام پایگاه داده در MongoEngine
  12. آموزش فیلترها در MongoEngine
  13. آموزش عملگرهای Query در MongoEngine
  14. آموزش روش های QuerySet در MongoEngine
  15. آموزش مرتب سازی در MongoEngine
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه