MongoEngine - 查询运算符

除了 = 运算符来检查是否相等,MongoEngine 中还定义了以下逻辑运算符。

ne 不等于
lt 小于
lte 小于等于
gt 大于
gte 大于等于
not 否定标准检查,可以在其他运算符之前使用
in 值在列表中
nin 值不在列表中
mod value % x == y,其中x和y是两个提供的值
all 提供的值列表中的每一项都在数组中
size 数组的大小为
exists 字段值存在

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

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

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

输出

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)

输出

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

您可以使用以下运算符作为正则表达式的快捷方式,以将过滤器应用于查询 −

exact 字符串字段与值完全匹配
iexact 字符串字段与值完全匹配(不区分大小写)
contains 字符串字段包含值
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)

输出

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)

输出

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