非關係數據庫------MongoDB的安裝與使用

MongoDB概述

MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

MongoDB特點

面向集合存儲,易存儲對象類型的數據;
模式自由、支持查詢、支持動態查詢;
支持完全索引,包含內部對象;
支持複製和故障恢復;
使用高效的二進制數據存儲,包括大型對象(如視頻等);
自動處理碎片,以支持雲計算層次的擴展性;
支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言;
文件存儲格式爲BSON(一種JSON的擴展);
可通過網絡訪問。

在Linux安裝MongoDB

#配置yum源倉庫
cd /etc/yum.repos.d/
vim mongodb-org.repo

[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


#安裝 MongoDB
yum install mongodb-org -y


#修改配置文件
vim /etc/mongod.conf

#修改第30行的監聽地址
bindIp: 0.0.0.0

#開啓服務
systemctl start mongod.service

#關閉防火牆和安全功能
systemctl stop firewalld.service 
setenforce 0

#查看服務端口狀態
netstat -ntap | grep mongod

#複製配置文件,以開啓多實例
cp -p /etc/mongod.conf /etc/mongod2.conf 

#修改配置文件
vim /etc/mongod2.conf

#第10行,修改日誌文件目錄
path: /var/log/mongodb/mongod2.log

#第14行,修改數據存儲目錄
dbPath: /data/mongodb/mongo

#第29行,修改服務端口號
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

MongoDB 基礎操作

#查看版本
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()                 
#統計有多少條數據

MongoDB 數據類型

String
#字符串,最常用,必須是utf-8

Boolean
#布爾值,true 或者false

Integer
#整數型

Double
#浮點型

Arrays
#數組或者列表,多個值存儲到一個鍵

Object
#用於嵌入文檔,即一個值爲一個文檔

Null
#存儲null值

Binary Data 
#二進制數據,用於存儲二進制數據

Date
#存儲當前日期或時間unix時間格式

查看數據類型

a=db.info.findOne({"id":1})   
#查找指定記錄並賦予別名a

ypeof(a.id)                  
#查看屬性類型

備份與恢復數據

導出工具:mongoexport

導入工具:mongoimport

常見選項:

-h,--host :代表遠程連接的數據庫地址,默認連接本地Mongo數據庫;
--port:代表遠程連接的數據庫的端口,默認連接的遠程端口27017;
-u,--username:代表連接遠程數據庫的賬號,如果設置數據庫的認證,需要指定用戶賬號;
-p,--password:代表連接數據庫的賬號對應的密碼;
-d,--db:代表連接的數據庫;
-c,--collection:代表連接數據庫中的集合;
-f, --fields:代表集合中的字段,可以根據設置選擇導出的字段;
--type:代表導出輸出的文件類型,包括csv和json文件;
-o, --out:代表導出的文件名;
-q, --query:代表查詢條件;
--skip:跳過指定數量的數據;
--limit:讀取指定數量的數據記錄;
--sort:對數據進行排序,可以通過參數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 爲升序排列,而-1是用於降序排列,如sort({KEY:1})。
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.142.152:27017"}) 

安全管理

創建管理用戶;
啓動時必須指定 auth=true;
可以將用戶分配角色;
內置數據庫用戶角色: read 、 readWrite;
數據庫管理員角色: dbAmin 、 dbOwner 、 userAdmin;
超級用戶管理員用戶:root
#編輯配置文件
vim /etc/mongod.conf

auth=true   
#添加指定

use admin
db.createUser({"yj":"root","pwd":"123","roles":["root"]})
#創建用戶yj  密碼123  分配root角色

db.auth("root","123")     
#驗證用戶

進程管理

查看當前正在運行的進程: db.currentOp()
終止正在運行的進程: db.killOp(opid值)
 db.currentOp()      
#查看當前運行進程

db.killOp(4872) 
#終止4872進程

MongoDB 監控

MongoDB提供一些內置工具可以監測數據庫的狀態信息
查看數據庫實例的狀態信息: db.serverStatus()
查看數據庫的統計信息: db.stats()
此外也可以通過web界面查看系統監控信息需要在配置文件中加入
##編輯配置文件
vim /etc/mongod.conf

#開啓http服務
httpinterface=true
發佈了95 篇原創文章 · 獲贊 7 · 訪問量 6289
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章