(1)MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。python
(2)MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是它支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。linux
(3)特色:web
面向集合存儲,易存儲對象類型的數據;
模式自由、支持查詢、支持動態查詢;
支持徹底索引,包含內部對象;
支持複製和故障恢復;
使用高效的二進制數據存儲,包括大型對象(如視頻等);
自動處理碎片,以支持雲計算層次的擴展性;
支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言;
文件存儲格式爲BSON(一種JSON的擴展);
可經過網絡訪問。mongodb
[mongodb-org] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
yum install mongodb-org -y
vim /etc/mongod.conf bindIp: 0.0.0.0 //監聽地址 port: 27017 //監聽端口
systemctl start mongod.service netstat -natp | grep 27017
cp -p /etc/mongod.conf /etc/mongod2.conf vim /etc/mongod2.conf //修改如下代碼: path: /data/mongodb/mongod2.log //日誌文件目錄 dbPath: /data/mongodb/mongo //數據存儲目錄 port: 27018 //服務器端口
mkdir -p /data/mongodb/ cd /data/mongodb/ mkdir mongo touch mongod2.log chmod 777 mongod2.log
mongod -f /etc/mongod2.conf mongo --port 27018 //指定實例的端口 netstat -ntap
(1)文檔 : 至關於關係數據庫的 行 (多個文檔組成集合)數據庫
(2)集合 : 至關於關係數據庫的 表 (多個集合組成數據庫)json
(3)數據庫名特殊做用:vim
admin: 將用戶添加到這個庫,這個用戶繼承數據庫全部權限;
local : 這個庫永遠不被複制,能夠存儲限於本地單臺服務器的任意集合;
config : 當Mongo用於分片設置時,這個庫在內部使用,保存分片的相關信息。
mongo //進入數據庫數組
> db.version() //查看版本 > show dbs; // 查看數據庫 > db.getMongo() //查看當前數據庫機器的鏈接地址 > db.集合名.help //顯示集合操做命令 > show users //顯示用戶
> use school; //打開school數據庫, 不存在會建立,不創建集合又會刪除 > db.createCollection('info') //建立集合 > db.info.insert({"id":1,"name":"zhangsan","hobby":["game","talk"]}) //添加數據 > db.info.find() //查看info集合中全部文檔 > show collections //查看數據庫中全部集合 > db.info.update({"id":10},{$set:{"name":"tom"}}) //更改數據 > db.info.remove({"id":2}) //移除info集合中的id2的數據 > db.info.drop() //刪除info集合 > db.dropDatabase() //刪除數據庫 先use到要刪的數據庫裏在刪 > db.info.count() //統計有多少條數據
String: 字符串,最經常使用,必須是utf-8 Boolean:布爾值,true 或者false Integer:整數 Double:浮點數 Arrays:數組或者列表,多個值存儲到一個鍵 Object:用於嵌入文檔,即一個值爲一個文檔 Null:存儲null值 Binary Data : 二進制數據,用於存儲二進制數據 Date:存儲當前日期或時間unix時間格式
> a=db.info.findOne({"id":1}) //查找指定記錄並賦予別名a > typeof(a.id) //查看屬性類型
導出:mongoexport 導入:mongoimport 常見選項: -d 數據庫 -c 集合 -o 目錄文件.json結尾 -q 導出數據過濾條件 -f 導出哪些列 for(var i=1;i<=100;i++)db.info.insert({"id":i,"name":"jack"+i}) //循環寫入100條數據 mongoexport -d school -c info -o /opt/info.json //導出 mongoimport -d school -c info1 --file /opt/info.json //導入到info1集合 mongoexport -d school -c info1 -q '{"id":{"$eq":10}}' -o /opt/top10.json //條件導出指定第10行
① 備份:mongodump
② 恢復:mongorestore
③ 選項:安全
-h 指定Mongodb所在服務器的地址也能夠指定端口(例:-h 127.0.0.1:27017)
-d :須要備份的數據庫;
-o :備份數據存放的目錄 該目錄需提早建立服務器
mkdir /backup //建立存放目錄 mongodump -d school -o /backup/ //備份school數據庫 mongorestore -d school1 --dir=/backup/school //恢復到school1數據庫
④ 複製數據庫:
db.copyDatabase("school","school2") //複製數據庫school 到school2中
⑤ 克隆數據庫:
把數據庫school的info集合 克隆到實例2 先進入實例2的MongoDB mongo --port 27018 db.runCommand({"cloneCollection":"school.info","from":"192.168.126.130:27017"})
三、安全管理:
建立管理用戶;
啓動是必須指定 auth=true;
能夠將用戶分配角色;
內置數據庫用戶角色: read 、 readWrite;
數據庫管理員角色: dbAmin 、 dbOwner 、 userAdmin;
超級用戶角色 :root
vim /etc/mongod.conf auth=true //添加 mongo > use admin > db.createUser({"aaa":"root","pwd":"123","roles":["root"]}) //建立用戶aaa 密碼123123 分配到root角色 > db.auth("root","123123") //驗證用戶
四、進程管理:
終止正在運行的進程: db.killOp(opid值)
查看當前正在運行的進程: db.currentOp()
> db.currentOp() //查看 > db.killOp(4872) //終止4872進程
五、MongoDB 監控:
MongoDB提供一些內置工具能夠監測數據庫的狀態信息
查看數據庫實例的狀態信息: db.serverStatus()
查看數據庫的統計信息: db.stats()
此外也能夠經過web界面查看系統監控信息須要在配置文件中加入
vim /etc/mongod.conf httpinterface=true