MongoDB GridFS

GridFS 是 MongoDB 規(guī)范,用于存儲(chǔ)和檢索大型文件,如圖像、音頻文件、視頻文件等。它類似于存儲(chǔ)文件的文件系統(tǒng),但是它的數(shù)據(jù)存儲(chǔ)在 MongoDB 集合中。GridFS 能夠存儲(chǔ)甚至大于其文檔大小限制(16mb)的文件。

GridFS將文件分為多個(gè)塊,并將每個(gè)數(shù)據(jù)塊存儲(chǔ)在單獨(dú)的文檔中,每個(gè)文件的最大大小為255k。

默認(rèn)情況下,GridFS使用兩個(gè)集合,fs.filesfs.chunks存儲(chǔ)文件的元數(shù)據(jù)和塊。每個(gè)塊均由其唯一的_id ObjectId字段標(biāo)識(shí)。fs.files作為父文檔。files_idfs.chunks文檔中的字段將塊鏈接到其父級(jí)。

以下是fs.files集合的樣本文檔-

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

該文檔指定文件名,塊大小,上載日期和長(zhǎng)度。

以下是fs.chunks文檔的樣本文檔-

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

將文件添加到GridFS

現(xiàn)在,我們將使用put命令使用GridFS存儲(chǔ)mp3文件。為此,我們將使用mongofiles.exeMongoDB安裝文件夾的bin文件夾中的實(shí)用程序。

打開命令提示符,導(dǎo)航到MongoDB安裝文件夾的bin文件夾中的mongofiles.exe,然后鍵入以下代碼-

>mongofiles.exe -d gridfs put song.mp3

此處gridfs是將在其中存儲(chǔ)文件的數(shù)據(jù)庫(kù)的名稱。如果數(shù)據(jù)庫(kù)不存在,MongoDB將自動(dòng)動(dòng)態(tài)創(chuàng)建一個(gè)新文檔。Song.mp3是上載文件的名稱。要查看數(shù)據(jù)庫(kù)中文件的文檔,可以使用find查詢-

>db.fs.files.find()

上面的命令返回了以下文檔-

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

我們還可以使用以下代碼,使用上一個(gè)查詢中返回的文檔ID來(lái)查看fs.chunks集合中與存儲(chǔ)文件相關(guān)的所有塊:

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

就我而言,該查詢返回了40個(gè)文檔,這意味著整個(gè)mp3文檔被分為40個(gè)數(shù)據(jù)塊。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清