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 字符串字段包含值
图标 字符串字段包含值(不区分大小写)
以。。开始 字符串字段以值开头
开始 字符串字段以值开头(不区分大小写)
endswith 字符串字段以值结尾
字符串字段以值结尾(不区分大小写)
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