GridFS 用於存儲和恢復那些超過16M(BSON文件限制)的文件(如:圖片、音頻、視頻等)。
GridFS 也是文件存儲的一種方式,但是它是存儲在MonoDB的集合中。
GridFS 可以更好的存儲大於16M的文件。
GridFS 會將大文件對象分割成多個小的chunk(文件片段),一般為256k/個,每個chunk將作為MongoDB的一個文檔(document)被存儲在chunks集合中。
GridFS 用兩個集合來存儲一個文件:fs.files與fs.chunks。
每個文件的實際內容被存在chunks(二進制數據)中,
和文件有關的meta數據(filename,content_type,還有用戶自定義的屬性)將會被存在files集合中。
以下使用mongoCompass工具查詢,該文件分成 1個區塊。
fs.chunks集合中多個文檔中的file_id字段對應fs.files集中文檔”_id”字段
fs.chunks 集合存儲文件文件內容的二進制數據,以類json格式文檔形式存儲。每在GridFS存儲一個文件,GridFS就會將文件內容按照chunksize大小(chunk容量為256k)分成多個文件塊,然后將文件塊按照類json格式存在.chunks集合中,每個文件塊對應fs.chunk集合中一個文檔。一個存儲文件會對應一到多個chunk文檔。
{files_id:ObjectId('5ee738a833e9a2601ec1fcb8')} 根據file中的id查詢chunks中的數據