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