- MongoEngine 教程
- MongoEngine - 首页
- MongoEngine - MongoDB
- MongoEngine - MongoDB Compass
- MongoEngine - 对象文档映射器
- MongoEngine - 安装
- MongoEngine - 连接到 MongoDB 数据库
- MongoEngine - 文档类
- MongoEngine - 动态架构
- MongoEngine - 字段
- MongoEngine - 添加/删除文档
- MongoEngine - 查询数据库
- MongoEngine - 过滤器
- MongoEngine - 查询运算符
- MongoEngine - QuerySet 方法
- MongoEngine - 排序
- MongoEngine - 自定义查询集
- MongoEngine - 索引
- MongoEngine - 聚合
- MongoEngine - 高级查询
- MongoEngine - 文档继承
- MongoEngine - 原子更新
- MongoEngine - Javascript
- MongoEngine - 文件系统
- MongoEngine - 信号
- MongoEngine - 文本搜索
- MongoEngine - 扩展
- MongoEngine 有用资源
- MongoEngine - 快速指南
- MongoEngine - 有用资源
- MongoEngine - 讨论
MongoEngine - 文件系统
在 MongoDB 中,大于 16 MB 的文件按照 GridFS 规范存储。一个文件被分成多个块,每个块的默认大小为 255KB。大块可能大到所需的大小。GridFS 使用两个集合,一个用于块,另一个用于元数据。
如果希望访问文件而无需将其全部载入内存,可以使用 GridFS 来存储任何文件。
MongoEngine API 通过FileField对象支持 GridFS。通过此对象,可以插入和检索数据。FileField 对象的put()方法有助于将文件作为文档的一部分进行编写。
from mongoengine import * con=connect('newdb') class lang (Document): name=StringField() developer=StringField() logo=FileField() l1=lang() l1.name='Python' l1.developer='Van Rossum' f=open('pylogo.png','rb') l1.logo.put(f,content_type='image/png') l1.save()
可以使用 Python 的文件对象通过 read() 方法来检索 FileField 内容。
logo = l1.logo.read()
还有一个delete()方法用于删除存储的文件。
l1 = lang.objects(name='Python').first() l1.logo.delete() l1.save()
请注意,FileField 只存储一个单独 GridFS 集合中的文件 ID。因此,delete() 方法不会实际删除文件。
replace()方法有助于用另一个文件替换文件引用。
l1 = lang.objects(name='Python').first() f=open('newlogo.png','rb') l1.logo.replace(f,content_type='image/png') l1.save()
广告