将图片、文档等存入mogodb中,需要用到两个模块,pymongo和gridfs,在存入过程中必须将文件转换为二进制的格式才能存入,存入mongoDB中会生成两个文件xxx.chunk 和xxx.files。
GridFS是一种将大型文件存储在MongoDB的文件规范:数据库支持以BSON格式保存二进制对象。 但是MongoDB中BSON对象最大不能超过4MB。
GridFS 规范提供了一种透明的机制,可以将一个大文件分割成为多个较小的文档。
为实现这点,该规范指定了一个将文件分块的标准。每个文件都将在文件集合对象中保存一个元数据对象,一个或多个块对象可被组合保存在一个块集合中。
以存储图片为例,代码如下:
import pymongo
import gridfs
from bson import ObjectId
client = pymongo.MongoClient('localhost', connect=False)
db = client['demo']
# 存储到mongodb
def save_file_to_mongo(content):
with open(content, 'rb') as f:
data = f.read()
fs = gridfs.GridFS(db, 'img')
retrun fs.put(data)
# 从mongodb取出文件
def get_file_from_mongo(id):
fs = gridfs.Gri