MongoDB——GridFS
MongoDB GridFS
GridFS 用于存儲和恢復那些超過16M(BSON文件限制)的文件(如:圖片、音頻、視頻等)。
GridFS 也是文件存儲的一種方式,但是它是存儲在MonoDB的集合中。
GridFS 可以更好的存儲大于16M的文件。
GridFS 會將大文件對象分割成多個小的chunk(文件片段),一般為256k/個,每個chunk將作為MongoDB的一個文檔(document)被存儲在chunks集合中。
GridFS 用兩個集合來存儲一個文件:fs.files與fs.chunks。
每個文件的實際內容被存在chunks(二進制數據)中,和文件有關的meta數據(filename,content_type,還有用戶自定義的屬性)將會被存在files集合中。
使用
調用 MongoDB 安裝目錄下bin的 mongofiles.exe工具
具體操作
存儲文件:mongofiles –d database put filename
獲取文件:mongofiles –d database -l new_filename get filename
刪除文件:mongofiles –d database delete filename
存儲文件:mongofiles –d database -l filename put new_filename
以這種命令上傳文件,文件名為new_filename,不會攜帶路徑
查看文件列表:mongofiles -d database list
查找文件: mongofiles -d database search test.txt
pymongo操作
from pymongo import MongoClient from gridfs import GridFSclient = MongoClient() database = client.get_database('files') gf = GridFS(database=database)res = gf.find_one() print(res) {'_GridOut__buffer': b'','_GridOut__chunk_iter': None,'_GridOut__chunks': Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'files'), 'fs.chunks'),'_GridOut__file_id': None,'_GridOut__files': Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'files'), 'fs.files'),'_GridOut__position': 0,'_file': {'_id': ObjectId('6236e52955dd69298cc54a16'),'chunkSize': 261120,'filename': 'test.txt','length': 18,'md5': '7552e7c2987420e42fa1b19a0988c7a1','uploadDate': datetime.datetime(2022, 3, 20, 8, 26, 17, 943000)},'_session': None}# 打印文件列表['filename1','filename2',...] print(gf.list())# 下載文件 with open('./gettest.txt','wb') as f:for line in gf.get(res._id):f.write(line)# 上傳文件 with open('./gettest.txt','rb') as f:gf.put(f.read(),filename='gettest.txt')總結
以上是生活随笔為你收集整理的MongoDB——GridFS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钰泰ETA8113,ETA8120,ET
- 下一篇: ble mac地址 协议_让BLE设备的