MongoEngine - 动态模式
MongoDB 数据库的优点之一是它支持动态模式。 要创建支持动态模式的类,请从 DynamicDocument 基类继承它。 以下是具有动态模式的学生类 −
>>> class student(DynamicDocument): ... name=StringField()
第一步是像以前一样添加第一个 Document。
>>> s1=student() >>> s1.name="Tara" >>> connect('mydb') >>> s1.save()
现在向第二个文档添加另一个属性并保存。
>>> s2=student() >>> setattr(s2,'age',20) >>> s2.name='Lara' >>> s2.save()
在数据库中,student 学生集合将显示两个具有动态模式的文档。
文档类元字典可以通过指定max_documents和max_size来使用Capped Collection。
max_documents − 集合中允许存储的最大文档数。
max_size − 集合的最大大小(以字节为单位)。 max_size 由 MongoDB 内部和之前的 mongoengine 向上取整为 256 的下一个倍数。
如果未指定 max_size 而指定了 max_documents,则 max_size 默认为 10485760 字节 (10MB)。
Document类的其他参数如下表 −
objects | 在访问时延迟创建的 QuerySet 对象。 |
cascade_save() | 递归保存文档中的所有引用和通用引用。 |
clean() | 用于在运行验证之前进行文档级数据清理的挂钩。 |
create_index() | 如果需要,创建给定的索引。 |
drop_collection() | 从数据库中删除与此文档类型关联的整个集合。 |
from_json() | 将 json 数据转换为 Document 实例。 |
modify() | 对数据库中的文档执行原子更新,并使用更新后的版本重新加载文档对象。 |
pk | 获取主键 |
save() | 将文档保存到数据库。 如果文档已经存在,它将被更新,否则将被创建。 返回保存的对象实例。 |
delete() | 从数据库中删除当前文档。 |
insert() | 执行批量插入操作。 |