8 MongoDB介紹
8.1 windows平臺下MongoDB安裝和環境搭建
MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。
MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。
MongoDB優點:
- 高可拓展性
- 分佈式存儲
- 低成本
- 結構靈活
NoSQL(not only sql)優點:
- 高可擴展性
- 分佈式計算
- 低成本
- 架構的靈活性,半結構化數據
- 沒有複雜的關係
缺點:1、沒有標準化;2、有限的查詢功能(到目前爲止);3、最終一致是不直觀的程序。
- 下載安裝包或者壓縮包
- 添加db存儲和日誌存儲文件夾(data,etc/mongo.conf,logs/mongodb.log)
- 添加服務、配置環境變量、啓動MongoDB
bin目錄下執行可執行cmd:mongod --dbpath c:\MongoDB\data --journal
mongo.conf文件配置:
# 數據庫路徑
dbpath = G:\Learning\MongoDB\data\
# 日誌輸出文件路徑
logpath = G:\Learning\MongoDB\logs\mongodb.log
# 錯誤日誌採用追加模式,配置這個選項後MongoDB的日誌會追加到現有的日誌文件,而不是重新創建一個新文件
logappend = true
# 啓用日誌文件,默認啓動
journal = true
# 這個選項可以過濾掉一些無用的日誌信息,若需要調試使用請設置爲false
quiet = false
# 端口號 默認27017
port = 27017
# 指定存儲引擎(默認先不加此引擎,如果報錯了,大家都加進去)針對win7 32位的系統
# storageEngine = mmapv1
# http配置(坑:在3.6版本之後就沒有這個參數了)
# httpinterface = true
配置完conf之後bin目錄下啓動cmd:mongod --config G:\Learning\MongoDB\etc\mongo.conf
坑:http配置:httpinterface = true(在3.6版本之後就沒有這個參數了)
將服務加載到windows的service服務下:mongod --config G:\Learning\MongoDB\etc\mongo.conf --install --serviceName "MongoDB" (--serviceName可以不要的)
在這裏,我配置了環境變量,然後添加到windows服務裏,每當我點擊啓動不是報“找不到指定文件”就是什麼“……100”,搜索了一萬種方法也是沒能解決,最終我選擇卸載重新安裝再配置。卸載的時候直接打開我們安裝時的msi,他可以幫助我們卸載,它卸載的不完全,所以我們得把文件夾裏的內容刪掉,再重新安裝。最終,我本打算去配置service服務,發現裏面已經有MongoDBService了,而且已經啓動了,what?什麼鬼?然後我趕緊打開網頁測試了一下localhost:27017,完全運行正常!
只能繼續學習吧!
MongoVue:cmd mongo
- show dbs
- use imoocmall
- db.goods.insert({id:101,name:"mi6",salePrice:2499})
8.2 Linux平臺下的搭建
- 下載安裝包或者壓縮包
- 上傳服務器,解壓縮
- 添加db存儲和日誌存儲文件夾
- scp ……tgz [email protected]:/
- tar -zxvf ……tgz(解壓)
- mkdir mongodb
- mv …… mongodb(把文件裝進)
- 創建data、etc\mongo.conf、logs\mongodb.log
- 配置mongodb.conf
8.3 給MongoDB創建用戶
>use admin
>db.createUser({user:"admin",pwd:"admin",roles:["root"]})
>db.auth("admin","admin")
>db.createUser({user:"admin",pwd:"123456",roles:[{role:"dbOwner",db:"test"}]})
>db.createUser({user:"roots",pwd:"666666",roles:[{role:"dbOwner",db:"dumall"}]})
注:在3.0以後免費的MongoVue很多功能就不支持了,所以要用Studio-3T(不是免費的)
- 創建管理員
- 授權認證
- 給使用的數據庫添加用戶
8.4 MongoDB基本語法
- 數據庫對比:
SQL術語/概念 | MongoDB術語/概念 | 解釋/說明 |
database | database | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 數據記錄行/文檔 |
column | field | 數據字段/域 |
index | index | 索引 |
table joins | 表連接,MongoDB不支持 | |
primary key | primary key | 主鍵,MongoDB自動將_id字段設置爲主鍵 |
>show dbs
>use demo
>db.createCollection("user")
>db.users.insert({id:123,name:"hello"})
>show collections
>db.dropDatabase()
>db.user.drop()
>db.user.insert({userId:101,userName:"Jack",userAge:28,class:{name:"imooc",num:10}})
>db.user.update({userName:'Jack'},{$set:{userAge:30}})
>db.user.update({userName:'Jack'},{$set:{'class.name':'imooc-test'}})
>db.user.remove({userName:"jack"})
>db.user.find() 查詢所有數據
>db.user.find().pretty() 對查到的數據格式化
>db.user.findOne() 查第一條數據
>db.user.find({userName:'Jack'})
>db.user.find({userAge:{$gt:20}}) (大於:$gt,小於:$lt,小於等於:$lte,大於等於:$gte,不等於:$ne,等於:$eq或者:)
- 插入文檔
- 更新文檔
- 刪除文檔
- 查詢文檔
8.5 表數據設計和插入
export、import