mongoDB 大文件存儲方案, JS 支持展示


文件存儲

方式分類

傳統方式

存儲路徑   僅存儲文件路徑, 本質為 字符串

優點: 節省空間
缺點: 不真實存儲在數據庫, 文件或者數據庫發送變動需要修改數據庫

存儲文件本身    將文件轉換成 二進制 存儲在數據庫

優點: 文件在數據庫中, 不容易丟失
缺點: 占用數據庫空間較多, 文件存取效率不高

GridFS 文件存儲方案

目的  更好的存取 MongoDB 中的大文件 ( 超過 16 m 就被認為大文件 )

1.   在 MongoDB 中創建兩個集合, 共同存儲文件
2.   fs.files 集合用於存儲文件信息, 為每個文件建立一個信息文檔
3.   fs.chunks 集合中建立與 fs.files 集合對應文件文檔的關聯, 將文件分塊, 以 2 進制格式存儲

 

優點: 存儲方便, 提供了較好的存儲命令
缺點: 讀寫效率較低, 不建議存儲小文件

 

存取方法

存儲

命令

mongofiles -d dbname put file

 

dbname 不存在的時候回自動創建

實例

 mongofiles -d dbname put dict_demo/e_dict.txt

 

> db.fs.files.find()
{ "chunkSize" : 261120,
    "uploadDate" : ISODate("2019-03-04T03:23:28.375Z"),
    "length" : 16640891,
    "md5" : "01b9e949829b44970d527425e8e93b12",
    "filename" : "dict_demo/e_dict.txt" }
> db.fs.chunks.find() {"_id": ..., "files_id":....., 關聯 files 表的ID "n":38, "data":BinDate(0,"ZlcmlvciB0byB0aGUgb.....HVzdSBpbmZ0aW1l") } Type "it" for more

 

提取

命令

mongofiles -d dbname get file

實例

tarena@tedu:~$ mongofiles -d grid get dict_demo/e_dict.txt
2019-03-04T11:41:43.911+0800    connected to: localhost
finished writing to dict_demo/e_dict.txt
tarena@tedu:~$

 

mongo shell 對 JavaScript 的支持

界面支持 基本的 JS 程序
通過 JS 也可以處理一些簡單的邏輯問題

> var cursor = db.class.find()
> cursor.next()
{
    "_id" : ObjectId("5c775857c69c81d07212f58a"),
    "name" : "yang",
    "age" : 6,
    "score" : [
        98,
        56,
        32
    ]
}
>

 

 

 

 
        

 

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM