MongoEngine 文档类和上下文管理说明

2017-09-14 0 By admin

Python模块的框架库 MongoEngine 介绍各种对象类。包括连接类、文档类、上下文管理和查询等。

一、文档类介绍

class mongoengine.Document(*args, **values)
用于定义存储在mongodb中的文档集合的结构和属性的基类。继承此积累,并将字段添加为类属性进而定义文档结构。然后通过创建Documnet子类的实例来创建单个文档。

  1. 被继承;设置meta={“allow_inheritance”:true}
  2. 限制大小:max_documents和max_size(256b的倍数)
  3. 索引:meta={“indexes”:—} 和auto_create_index
  4. 严格模式:添加未定义的字段,会报FieldDoesNotExist错,可以设置strict:False

1.1、属性

objects:QuerySet类,用于访问数据。
pk:获取主键。

1.2、方法

文档类的常用方法有更新、保存和重新加载等。
删除数据
delete(signal_kwargs = None,** write_concern )
需要save()才能生效。
重新加载所有属性
reload(*Fields,** kwargs )
保存
save(force_insert = False,validate = True,clean = True,write_concern = None,cascade = None,cascade_kwargs = None,_refs = None,save_condition = None,signal_kwargs = None,** kwargs )
更新
update(** kwargs )

1.3、类方法

classmethod compare_indexes()
classmethod create_index(keys,background = False,** kwargs )
classmethod drop_collection()
classmethod ensure_index(key_or_list,drop_dups = False,background = False,** kwargs )
classmethod ensure_indexes()
classmethod list_indexes()

class mongoengine.EmbeddedDocument(*args, **kwargs)
可被继承类 allow_inheritance:True

class mongoengine.DynamicDocument(*args, **values)
动态文档类

class mongoengine.DynamicEmbeddedDocument(*args, **kwargs)
动态可继承文档类

二、上下文管理

2.1、更改使用的数据库

class mongoengine.context_managers.switch_db(cls, db_alias)
cls:更改注册数据库的类
db_alias:指定要使用的数据库

更改使用的集合Collection

class mongoengine.context_managers.switch_collection(cls,collection_name )
cls:更改注册数据库的类
collection_name:指定要使用的集合名称
#使用这个可以动态生成集合名称;如将每天的数据,写入到以日期命名的集合中。

三、查询

class mongoengine.queryset.QuerySet(document, collection)
默认查询集,构建查询并处理从查询返回的一组结果。
包装一个MongoDB游标,提供Document对象作为结果。

四、其他

Fields

嵌入式文档查询

杂项