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