MongoEngine - 查询运算符


除了用于检查相等性的 = 运算符之外,MongoEngine 中还定义了以下逻辑运算符。

不等于
少于
LTE 小于或等于
GT 比...更棒
通用电气 大于或等于
不是 否定标准检查,可以在其他运算符之前使用
值在列表中
值不在列表中
模组 value % x == y,其中 x 和 y 是两个提供的值
全部 提供的值列表中的每个项目都在数组中
尺寸 数组的大小是
存在 字段值存在

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

要使用大于 (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

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

精确的 字符串字段与值完全匹配
精确的 字符串字段与值完全匹配(不区分大小写)
包含 字符串字段包含值
图标包含 字符串字段包含值(不区分大小写)
以。。开始 字符串字段以值开头
开始于 字符串字段以值开头(不区分大小写)
以。。结束 字符串字段以值结尾
朋友 字符串字段以值结尾(不区分大小写)
匹配 执行 $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