位置:首頁 > 數據庫 > MongoDB教學 > MongoDB GridFS

MongoDB GridFS

GridFS 介紹

GridFS是MongoDB規範用於存儲和檢索大文件,如圖片,音頻文件,視頻文件等。這是一種文件係統用來存儲文件,但數據存儲於MongoDB集合中。GridFS存儲文件比其文檔大小16MB限製的更大能力。

GridFS的劃分一個文件分成塊存儲數據每個塊在一個單獨的文件,每個最大尺寸255K。

GridFS默認使用兩個集合 fs.files 和 fs.chunks 存儲該文件的元數據和塊。每組塊標識其唯一的_id ObjectID字段。fs.files切斷作為父文件。 fs.chunks 文檔 files_id 字段鏈接塊到其父文件。

以下是fs.files集合的樣本文件:

{
   "filename": "test.txt",
   "chunkSize": NumberInt(261120),
   "uploadDate": ISODate("2014-04-13T11:32:33.557Z"),
   "md5": "7b762939321e146569b07f72c62cca4f",
   "length": NumberInt(646)
}

文件指定的文件名,塊大小,上傳日期,和長度。

以下是 fs.chunks 文件的樣本文件:

{
   "files_id": ObjectId("534a75d19f54bfec8a2fe44b"),
   "n": NumberInt(0),
   "data": "Mongo Binary Data"
}

將文件添加到GridFS:

現在,我們將使用GridFS的put命令存儲MP3文件。 為此,我們將使用存在於MongoDB的安裝文件夾下的bin文件夾的mongofiles.exe工具。

打開命令提示符,導航到MongoDB的安裝文件夾下的bin文件夾中的mongofiles.exe,並鍵入下麵的代碼:

>mongofiles.exe -d gridfs put song.mp3

這裡,gridfs上在文件存儲在數據庫的數據庫名稱。 如果數據庫不存在,MongoDB會自動動態創建一個新文檔。 Song.mp3的是上載的文件的名稱。要查看數據庫文件的文件,你可以使用查詢找到:

>db.fs.files.find()

上麵的命令返回以下文檔:

{
   _id: ObjectId('534a811bf8b4aa4d33fdf94d'), 
   filename: "song.mp3", 
   chunkSize: 261120, 
   uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41",
   length: 10401959 
}

我們也可以看到在fs.chunks集合涉及使用下麵的代碼保存的文件都存在於塊中,使用以前的查詢返回文檔ID:

>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})

在我的示例中,該查詢返回40個文檔,是整個MP3文件劃分成的40塊數據。