- Mongo引擎教程
- MongoEngine - 主页
- MongoEngine——MongoDB
- MongoEngine - MongoDB 指南针
- MongoEngine - 对象文档映射器
- MongoEngine - 安装
- MongoEngine - 连接到 MongoDB 数据库
- MongoEngine - 文档类
- MongoEngine - 动态模式
- MongoEngine - 字段
- MongoEngine - 添加/删除文档
- MongoEngine - 查询数据库
- MongoEngine - 过滤器
- MongoEngine - 查询运算符
- MongoEngine - 查询集方法
- MongoEngine - 排序
- MongoEngine - 自定义查询集
- MongoEngine - 索引
- MongoEngine - 聚合
- MongoEngine - 高级查询
- MongoEngine - 文档继承
- MongoEngine - 原子更新
- MongoEngine-Javascript
- MongoEngine-GridFS
- MongoEngine - 信号
- MongoEngine - 文本搜索
- MongoEngine - 扩展
- MongoEngine 有用资源
- MongoEngine - 快速指南
- MongoEngine - 有用的资源
- MongoEngine - 讨论
MongoEngine - 文档继承
可以定义任何用户定义的 Document 类的继承类。如果需要,继承的类可以添加额外的字段。但是,由于此类不是 Document 类的直接子类,因此它不会创建新的集合,而是将其对象存储在其父类使用的集合中。在父类中,元属性' allow_inheritance下面的示例中,我们首先将employee定义为文档类并将allow_inheritance设置为true。工资等级源自employee,增加了两个字段dept和sal。Employee 对象以及工资类别存储在雇员集合中。
在下面的示例中,我们首先将employee定义为文档类并将allow_inheritance设置为true。工资等级源自employee,增加了两个字段dept和sal。Employee 对象以及工资类别存储在雇员集合中。
from mongoengine import * con=connect('newdb') class employee (Document): name=StringField(required=True) branch=StringField() meta={'allow_inheritance':True} class salary(employee): dept=StringField() sal=IntField() e1=employee(name='Bharat', branch='Chennai').save() s1=salary(name='Deep', branch='Hyderabad', dept='Accounts', sal=25000).save()
我们可以验证两个文档存储在员工集合中,如下所示 -
{ "_id":{"$oid":"5ebc34f44baa3752530b278a"}, "_cls":"employee", "name":"Bharat", "branch":"Chennai" } { "_id":{"$oid":"5ebc34f44baa3752530b278b"}, "_cls":"employee.salary", "name":"Deep", "branch":"Hyderabad", "dept":"Accounts", "sal":{"$numberInt":"25000"} }
请注意,为了识别相应的 Document 类,MongoEngine 添加了一个“_cls”字段并将其值设置为“employee”和“employee.salary”。
如果要向一组 Document 类提供额外的功能,但又不想产生继承开销,则可以首先创建一个抽象类,然后从该抽象类派生一个或多个类。要使类抽象,元属性“abstract”设置为 True。
from mongoengine import * con=connect('newdb') class shape (Document): meta={'abstract':True} def area(self): pass class rectangle(shape): width=IntField() height=IntField() def area(self): return self.width*self.height r1=rectangle(width=20, height=30).save()