mongoengine操作mongodb的几种常见操作类型

49,950 阅读3分钟

1.过滤查询()

QuerySet可以通过使用字段查找关键字参数调用对象来过、查询。关键字参数中的键对应于 Document您正在查询的字段:

T.objects(country='uk')
关键字:country是T的属性

2.查询运算符

将运算符名称附加到带有双下划线的键后面

查询中除相等之外的运算符——只需将运算符名称附加到带有双下划线的键上(后缀):

T.objects(age__lte=18)    
查询age小于等于18的数据

可用的运算符如下:

  • ne- 不等于
  • lt- 少于
  • lte– 小于或等于
  • gt- 比...更棒
  • gte– 大于或等于
  • not– 否定标准检查,可在其他运算符之前使用(例如 )Q(age__not__mod=(5, 0))
  • in– 值在列表中(应提供值列表)
  • nin– 值不在列表中(应提供值列表)
  • mod– , 其中和是两个提供的值value % x == y``x``y
  • all– 提供的值列表中的每个项目都在数组中
  • size– 数组的大小是
  • exists– 字段值存在

3.字符串查询

将运算符名称附加到带有双下划线的键后面

以下运算符可用作使用正则表达式进行查询的快捷方式:

  • exact– 字符串字段与值完全匹配
  • iexact– 字符串字段与值完全匹配(不区分大小写)
  • contains– 字符串字段包含值
  • icontains– 字符串字段包含值(不区分大小写)
  • startswith– 字符串字段以值开头
  • istartswith– 字符串字段以值开头(不区分大小写)
  • endswith– 字符串字段以值结尾
  • iendswith– 字符串字段以值结尾(不区分大小写)
  • wholeword– 字符串字段包含整个单词
  • iwholeword– 字符串字段包含整个单词(不区分大小写)
  • regex– 通过正则表达式匹配字符串字段
  • iregex– 通过正则表达式匹配字符串字段(不区分大小写)
  • match – 执行 $elemMatch,以便您可以匹配数组中的整个文档

4.原始查询

可以提供原始PyMongo查询作为查询参数,该参数将直接集成到查询中。这是使用__raw__关键字参数完成的:

T.objects(__raw__={'tags': 'coding'})

同样,可以为该update()方法提供原始更新:

T.objects(tags='coding').update(__raw__={'$set': {'tags': 'coding'}})

并且两者也可以结合:

T.objects(__raw__={'tags': 'coding'}).update(__raw__={'$set': {'tags': 'coding'}})

5.原子更新(更新操作)

将运算符名称附加到带有双下划线的键前面

文档可以通过使用 a 上的 update_one()update()和 modify()方法以及 a 上的 QuerySet( modify()带 save()参数save_condition) 来自动更新Document。您可以在这些方法中使用几种不同的“修饰符”:

  • set– 设置特定值
  • set_on_insert– 仅当这是新文档时设置 需要添加 upsert=True_
  • unset– 删除特定值(自 MongoDB v1.3 起)
  • max- 仅当值更大时更新
  • min– 仅在值较小时更新
  • inc– 将一个值增加一个给定的数量
  • dec– 将值递减给定数量
  • push– 将值附加到列表
  • push_all– 将多个值附加到列表中
  • pop–根据值删除列表的第一个或最后一个元素
  • pull– 从列表中删除一个值
  • pull_all- 从列表中删除几个值
  • add_to_set– 仅在列表中未添加值时才向列表中添加值
  • rename– 重命名键名

原子更新均是在文档实例的基础上操作