鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ GridFS
更新文檔
GridFS
Rockmongo 管理工具
Map Reduce
Java
創(chuàng)建備份
數(shù)據(jù)模型
創(chuàng)建數(shù)據(jù)庫(kù)
映射
查詢文檔
索引限制
ObjectId
刪除文檔
數(shù)據(jù)類型
高級(jí)索引
索引
優(yōu)勢(shì)
記錄排序
查詢分析
插入文檔
刪除集合
全文檢索
創(chuàng)建集合
概述
數(shù)據(jù)庫(kù)引用
覆蓋索引查詢
安裝環(huán)境
PHP
刪除數(shù)據(jù)庫(kù)
固定集合
關(guān)系
聚合
自動(dòng)增長(zhǎng)
復(fù)制
限制記錄
部署
分片
正則表達(dá)式
原子操作

GridFS

GridFS 簡(jiǎn)介

GridFS 是 MongoDB 的一個(gè)用來(lái)存儲(chǔ)/獲取大型數(shù)據(jù)(圖像、音頻、視頻等類型的文件)的規(guī)范。它相當(dāng)于一個(gè)存儲(chǔ)文件的文件系統(tǒng),但它的數(shù)據(jù)存儲(chǔ)在 MongoDB 的集合中。GridFS 能存儲(chǔ)超過(guò)文檔尺寸限制(16 MB)的文件。

GridFS 將文件分解成塊,將每塊數(shù)據(jù)保存在不同的文檔中,每塊大小最高為 255 KB。

GridFS 默認(rèn)使用 fs.filesfs.chunks 集合來(lái)存儲(chǔ)文件的元數(shù)據(jù)和塊。每個(gè)塊都由唯一的 _id ObjectId 字段來(lái)標(biāo)識(shí)。fs.files 用作父級(jí)文檔。fs.chunks 文檔中的 files_id 字段將塊連接到父級(jí)文檔上。

fs.files 集合的一個(gè)范例文檔如下所示:

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

該文檔指定了文件名、塊大小、上傳日期以及長(zhǎng)度。

下面是 fs.chunks 文檔的一個(gè)范例文檔:

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

為 GridFS 添加文件

下面我們將使用 put 命令,利用 GridFS 存儲(chǔ)一個(gè) mp3 文件。該例中,我們將使用 MongoDB 的 bin 文件夾下的 mongofiles.exe 工具。

打開(kāi)命令行提示符,瀏覽至 mongofiles.exe,輸入下列代碼:

>mongofiles.exe -d gridfs put song.mp3

上述代碼中,gridfs 是保存文件所在的數(shù)據(jù)庫(kù)名稱。如果數(shù)據(jù)庫(kù)不存在,MongoDB 將自動(dòng)創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù),Song.mp3 是上傳文件名。要想查看數(shù)據(jù)庫(kù)中文件的文檔,使用 find() 查詢:

>db.fs.files.find()

返回結(jié)果文檔如下所示:

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

我們還可以查看 fs.chunks 集合中所有與存儲(chǔ)文件相關(guān)的塊。代碼如下,其中使用了上次查詢所返回的文檔 id。

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

該例中,查詢返回了 40 個(gè)文檔,這就是說(shuō)整個(gè) Mp3 文件被分解成了 40 個(gè)數(shù)據(jù)塊。

上一篇:插入文檔下一篇:查詢文檔