MongoEngine - Query Operators



In addition to = operator to check equality, the following logical operators are defined in MongoEngine.

ne not equal to
lt less than
lte less than or equal to
gt greater than
gte greater than or equal to
not negate a standard check, may be used before other operators
in value is in list
nin value is not in list
mod value % x == y, where x and y are two provided values
all every item in list of values provided is in array
size the size of the array is
exists value for field exists

These operators must be attached to field name with double underscore __.

To use greater than (gt) operator, use the following format −

#using greater than operator
for product in products.objects(price__gt=10000):
   print ('ID:',product.ProductID, 'Name:',product.Name, 'Price:',product.price)

Output

ID: 1 Name: Laptop Price: 25000
ID: 2 Name: TV Price: 50000
ID: 5 Name: Printer Price: 12500

The in operator is like Python’s in operator. For name of product matching with names in list, the following code is used −

for product in products.objects(Name__in=['TV', 'Printer']):
print ('ID:',product.ProductID, 'Name:',product.Name, 'Price:',product.price)

Output

ID: 2 Name: TV Price: 50000
ID: 5 Name: Printer Price: 12500

You can use following operators as shortcut for regex expressions for applying filter to queries −

exact string field exactly matches value
iexact string field exactly matches value (case insensitive)
contains string field contains value
icontains string field contains value (case insensitive)
startswith string field starts with value
istartswith string field starts with value (case insensitive)
endswith string field ends with value
iendswith string field ends with value (case insensitive)
match performs an $elemMatch so you can match an entire document within an array

For example, the following code prints product details for name containing ‘o’ in name −

for product in products.objects(Name__contains='o'):
   print ('ID:',product.ProductID, 'Name:',product.Name, 'Price:',product.price)

Output

ID: 1 Name: Laptop Price: 25000
ID: 3 Name: Router Price: 2000

In another example of string query, the following code displays name ending with ‘er’−

for product in products.objects(Name__endswith='er'):
   print ('ID:',product.ProductID, 'Name:',product.Name, 'Price:',product.price)

Output

ID: 3 Name: Router Price: 2000
ID: 4 Name: Scanner Price: 5000
ID: 5 Name: Printer Price: 12500
Advertisements