Mongoengine 简明教程

MongoEngine - Query Operators

除了使用 = 操作符检查是否相等外,MongoEngine 中还定义了以下逻辑操作符。

ne

not equal to

lt

less than

lte

小于或等于

gt

greater than

gte

大于或等于

not

否定标准检查,可以在其他操作符之前使用

in

value is in list

nin

值不在列表中

mod

value % x == y,其中 x 和 y 是提供的两个值

all

提供的列表中的每一项都在数组中

size

数组的大小是

exists

value for field exists

这些运算符必须附加到带有双下划线 __ 的字段名。

要使用大于运算符 (gt),使用以下格式 -

#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

in 运算符类似于 Python 的 in 运算符。对于与列表中名称相匹配的产品名称,使用以下代码 -

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

您可以使用以下运算符作为应用于查询的正则表达式的快捷方式 -

exact

字符串字段与值完全匹配

iexact

字符串字段与值完全匹配(不区分大小写)

contains

string field contains value

icontains

字符串字段包含值(不区分大小写)

startswith

字符串字段以值开头

istartswith

字符串字段以值开头(不区分大小写)

endswith

字符串字段以值结尾

iendswith

字符串字段以值结尾(不区分大小写)

match

执行 $elemMatch,以便可以在数组中匹配整个文档

例如,以下代码将打印名称中包含 'o' 的产品详细信息 -

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

在另一个字符串查询示例中,以下代码显示以 '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