日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB——GridFS

發布時間:2024/3/13 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。