W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
GridFS 用于存儲(chǔ)和恢復(fù)那些超過16M(BSON文件限制)的文件(如:圖片、音頻、視頻等)。
GridFS 也是文件存儲(chǔ)的一種方式,但是它是存儲(chǔ)在MonoDB的集合中。
GridFS 可以更好的存儲(chǔ)大于16M的文件。
GridFS 會(huì)將大文件對(duì)象分割成多個(gè)小的chunk(文件片段),一般為256k/個(gè),每個(gè)chunk將作為MongoDB的一個(gè)文檔(document)被存儲(chǔ)在chunks集合中。
GridFS 用兩個(gè)集合來存儲(chǔ)一個(gè)文件:fs.files與fs.chunks。
每個(gè)文件的實(shí)際內(nèi)容被存在chunks(二進(jìn)制數(shù)據(jù))中,和文件有關(guān)的meta數(shù)據(jù)(filename,content_type,還有用戶自定義的屬性)將會(huì)被存在files集合中。
以下是簡(jiǎn)單的 fs.files 集合文檔:
{ "filename": "test.txt", "chunkSize": NumberInt(261120), "uploadDate": ISODate("2014-04-13T11:32:33.557Z"), "md5": "7b762939321e146569b07f72c62cca4f", "length": NumberInt(646) }
以下是簡(jiǎn)單的 fs.chunks 集合文檔:
{ "files_id": ObjectId("534a75d19f54bfec8a2fe44b"), "n": NumberInt(0), "data": "Mongo Binary Data" }
現(xiàn)在我們使用 GridFS 的 put 命令來存儲(chǔ) mp3 文件。 調(diào)用 MongoDB 安裝目錄下bin的 mongofiles.exe工具。
打開命令提示符,進(jìn)入到MongoDB的安裝目錄的bin目錄中,找到mongofiles.exe,并輸入下面的代碼:
>mongofiles.exe -d gridfs put song.mp3
GridFS 是存儲(chǔ)文件的數(shù)據(jù)名稱。如果不存在該數(shù)據(jù)庫,MongoDB會(huì)自動(dòng)創(chuàng)建。Song.mp3 是音頻文件名。
使用以下命令來查看數(shù)據(jù)庫中文件的文檔:
>db.fs.files.find()
以上命令執(zhí)行后返回以下文檔數(shù)據(jù):
{ _id: ObjectId('534a811bf8b4aa4d33fdf94d'), filename: "song.mp3", chunkSize: 261120, uploadDate: new Date(1397391643474), md5: "e4f53379c909f7bed2e9d631e15c1c41", length: 10401959 }
我們可以看到 fs.chunks 集合中所有的區(qū)塊,以下我們得到了文件的 _id 值,我們可以根據(jù)這個(gè) _id 獲取區(qū)塊(chunk)的數(shù)據(jù):
>db.fs.chunks.find({files_id:ObjectId('534a811bf8b4aa4d33fdf94d')})
以上實(shí)例中,查詢返回了 40 個(gè)文檔的數(shù)據(jù),意味著mp3文件被存儲(chǔ)在40個(gè)區(qū)塊中。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: