MongoDB GridFS


GridFS是用於儲存和檢索大型檔案(如影象,音訊檔案,視訊檔案等)的MongoDB規範。它是一種用於儲存檔案的檔案系統,但其資料儲存在MongoDB集合中。 GridFS儲存檔案可超過檔案大小限制為16MB的功能。

GridFS將檔案劃分成塊,並將每個資料塊儲存在單獨的文件中,每個檔案的最大大小為255k

預設情況下,GridFS使用兩個集合fs.filesfs.chunks來儲存檔案的後設資料和塊。 每個塊由其唯一的ObjectId欄位_id標識。 fs.files作為父文件進行切換。 fs.chunks文件中的files_id欄位將該塊連結到其父塊。

以下是fs.files集合的範例文件 -

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

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

以下是fs.chunks文件的範例文件 -

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

將檔案新增到GridFS

現在,使用put命令儲存一個使用GridFS的mp3檔案。 為此,我們將使用MongoDB安裝檔案夾的bin檔案夾中出現的mongofiles.exe工具程式。

開啟命令提示字元,導航到MongoDB安裝檔案夾的bin檔案夾中的mongofiles.exe,然後鍵入以下程式碼 -

D:\Program Files\MongoDB\Server\3.4\bin> mongofiles.exe -d gridfs put song.mp3

這裡,gridfs是要儲存檔案的資料庫的名稱。 如果資料庫不存在,MongoDB將自動建立一個新的文件。 song.mp3是上傳檔案的名稱。 要在資料庫中檢視檔案的文件,可以使用查詢查詢 -

> db.fs.files.find()

上述命令返回以下文件 -

{
   _id: ObjectId('595b99d9f6a6243715b3c316'), 
   filename: "song.mp3", 
   chunkSize: 381120, 
   uploadDate: new Date(1398391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41",
   length: 10401959 
}

還可以使用以前查詢中返回的文件ID,檢視與儲存檔案相關的fs.chunks集合中存在的所有塊,並使用以下程式碼:

>db.fs.chunks.find({files_id:ObjectId('595b99d9f6a6243715b3c316')})

在這個範例中,查詢返回50多個檔案,表示整個mp3檔案被分成50個資料塊。