Mongoengine 简明教程

MongoEngine - Dynamic Schema

MongoDB 数据库的优点之一是支持动态架构。若要创建支持动态架构的类,可从 DynamicDocument 基类进行子类化。以下是具有动态架构的 Student 类−

>>> 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()

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

dynamic schema

文档类的元字典可以通过指定 max_documents 和 max_size 使用限幅集合。

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

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

如果没有指定 max_size 但指定了 max_documents ,则 max_size 的默认值为 10485760 字节(10MB)。

文档类的其他参数如下所列 −

objects

在访问时延迟创建的 QuerySet 对象。

cascade_save()

以递归方式保存文档上的任何引用和泛型引用。

clean()

在运行验证之前用于执行文档级别数据清除的挂钩。

create_index()

根据需要创建给定的索引。

drop_collection()

从数据库中删除与该文档类型关联的整个集合。

from_json()

将 json 数据转换为 Document 实例。

modify()

以原子方式更新数据库中的文档并使用更新的版本重新加载文档对象。

pk

Get the primary key.

save()

将 Document 保存到数据库。如果文档已存在,则将对其进行更新,否则将创建该文档。返回已保存的对象实例。

delete()

从数据库中删除当前文档。

insert()

Performs bulk insert operation.