MongoEngine - 动态模式


MongoDB 数据库的优点之一是它支持动态模式。要创建支持动态架构的类,请将其从 DynamicDocument 基类创建子类。以下是具有动态模式的 Student 类 -

>>> class student(DynamicDocument):
... name=StringField()

第一步是像以前一样添加第一个文档。

>>> s1=student()
>>> s1.name="Tara"
>>> connect('mydb')
>>> s1.save()

现在向第二个文档添加另一个属性并保存。

>>> s2=student()
>>> setattr(s2,'age',20)
>>> s2.name='Lara'
>>> s2.save()

在数据库中,学生集合将显示两个具有动态模式的文档。

动态模式

文档类的元字典可以通过指定 max_documents 和 max_size 来使用 Capped Collection。

max_documents - 允许存储在集合中的最大文档数。

max_size - 集合的最大大小(以字节为单位)。max_size 之前由 MongoDB 内部和 mongoengine 向上舍入为 256 的下一个倍数。

如果未指定 max_size 而指定了 max_documents,则 max_size 默认为 10485760 字节 (10MB)。

Document 类的其他参数列出如下 -

物体 在访问时延迟创建的 QuerySet 对象。
级联保存() 递归保存文档上的所有引用和通用引用。
干净的() 用于在运行验证之前进行文档级数据清理的挂钩。
创建索引() 如果需要,创建给定的索引。
drop_collection() 从数据库中删除与此文档类型关联的整个集合。
from_json() 将 json 数据转换为 Document 实例。
调整() 对数据库中的文档执行Atomics更新,并使用更新后的版本重新加载文档对象。
PK 获取主键。
节省() 将文档保存到数据库。如果文档已经存在,则更新该文档,否则创建该文档。返回保存的对象实例。
删除() 从数据库中删除当前文档。
插入() 执行批量插入操作。