1. 程式人生 > >CentOS 7下MongoDB 3.6 的安裝及基本操作

CentOS 7下MongoDB 3.6 的安裝及基本操作

進程命令 san documents 獲得 運行 配置 imp 步驟 code

一、MongoDB簡介
  1. MongoDB是一款跨平臺、面向文檔的數據庫,可以實現高性能,高可用性,並且能夠輕松擴展。MongoDB 是由C++語言編寫的,是一個基於分布式文件存儲的開源數據庫系統。
    在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB可以為Web應用提供可擴展的高性能數據存儲解決方案。

  2. MongoDB是非關系數據庫當中功能最豐富,最像關系數據庫的。不采用關系模型主要是為了獲得更好的擴展性,MongoDB不再有“行”的概念,其運行方式主要基於兩個概念:集合(collection)和文檔(document)。
  3. MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

  4. MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

MongoDB主要特點

  1. MongoDB安裝簡單,提供了面向文檔存儲的功能,操作起來比較簡單和容易。
  2. MongoDB提供了復制、高可用性和自動分片功能。如果負載增加,它可以分布在計算機網絡中的其他節點,這就是所謂的分片。
  3. Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  4. MongoDB支持各種編程語言:Ruby、Python、Java、C++、PHP、C#等多種語言。

    二、MongoDB 3.6的安裝

    實驗步驟

    (1)部署 yum源倉庫

    
    vim /etc/yum.repos.d/mongod-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

### (2)Yum安裝

yum install mongodb-org -y

### (3).編輯MongoDB配置文件並啟動其服務

vim /etc/mongod.conf
bindIp: 0.0.0.0 #監聽地址
port: 27017 #監聽端口

systemctl start mongod.service #開啟服務
netstat -anpt | grep 27017 #檢查是否啟動

### (4)連接並訪問MongoDB

/usr/bin/mongo

db.version() #查看版本
3.6.6
show dbs; #查看數據庫
admin 0.000GB
config 0.000GB
local 0.000GB


----------
## 三、MongoDB 3.6的基本操作

1.開啟多實例

(1)復制一份配置文件給第二個實例

cp -p /etc/mongod.conf /etc/mongod2.conf
## 復制一份配置文件給第二個實例

(2)編輯第二個實例配置文件和啟動參數

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    ##給予日誌文件權限 

(3)啟動第二個實例

mongod -f /etc/mongod2.conf   ##開啟第二份實例
mongo --port 27018     ##進入數據庫

2.基本操作

## 創建數據庫 ,不存在會創建,不建立集合又會刪除
> use mydb;  
switched to db mydb

 ##創建集合
> db.createCollection(‘a‘) 
{ "ok" : 1 }

 ## 在集合中插入數據
> db.a.insert({"id":1,"name":"zhangsan"}) 
WriteResult({ "nInserted" : 1 })

## 查看集合中的數據
> db.a.find()  
{ "_id" : ObjectId("5b4c54bc8a4352592ecc288f"), "id" : 1, "name" : "zhangsan" }

##查找指定記錄並賦予別名a,查看屬性類型
> b=db.a.findOne({"id":1})
{
    "_id" : ObjectId("5b4c54bc8a4352592ecc288f"),
    "id" : 1,
    "name" : "zhangsan"
}
> typeof(b.id)
number   

##更改數據
> db.a.update({"id":1},{$set:{"name":"tom"}})  
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.a.find()
{ "_id" : ObjectId("5b4c54bc8a4352592ecc288f"), "id" : 1, "name" : "tom" }

##查看集合
> show collections  
a

##刪除集合
> db.a.drop()   
true

##刪除數據庫
> db.dropDatabase() 
{ "dropped" : "mydb", "ok" : 1 }

##復制數據庫
> db.copyDatabase("mydb","mydb1")  
{ "ok" : 1 }
> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB
mydb    0.000GB
mydb1   0.000GB

3.導入導出數據

  • mongoexport命令可以把一個collection導出成JSON格式或CSV格式的文件,可以通過參數指定導出的數據項,也可以根據指定的條件導出數據。
  • mongoimport命令可以把一個特定格式文件中的內容導入到指定的collection中。該工具可以導入SON格式或CSV格式的文件。

(1)創建100個數據

> use kgc;
switched to db kgc
> for(var i=1;i<=100;i++)db.users.insert({"id":i,"name":"jack"+i})
WriteResult({ "nInserted" : 1 })
> db.users.count()
100

(2)進行導入與導出操作

#導出操作
[root@localhost ~]# mongoexport -d kgc -c users -o /opt/users.json
2018-07-16T16:36:30.395+0800    connected to: localhost
2018-07-16T16:36:30.407+0800    exported 100 records

#查看導出的文件
[root@localhost ~]# head -n 3 /opt/users.json 
{"_id":{"$oid":"5b4c589f43705395b9afe284"},"id":1.0,"name":"jack1"}
{"_id":{"$oid":"5b4c589f43705395b9afe285"},"id":2.0,"name":"jack2"}
{"_id":{"$oid":"5b4c589f43705395b9afe286"},"id":3.0,"name":"jack3"}```
#導入操作
root@localhost ~]# mongoimport -d kgc -c user1 --file /opt/users.json
2018-07-16T16:38:13.615+0800    connected to: localhost
2018-07-16T16:38:13.635+0800    imported 100 documents

#查看導入的數據集合
> use kgc;
switched to db kgc
> show collections
user1
users
> exit
bye
#條件導出操作
[root@localhost ~]# mongoexport -d kgc -c user1 -q ‘{"id":{"$eq":10}}‘ -o /opt/top10.json
2018-07-16T16:40:28.912+0800    connected to: localhost
2018-07-16T16:40:28.915+0800    exported 1 record
  • -d:指明數據庫的名字
  • -c:指明collection的名字
  • -f :指明要導出那些列
  • -o:指明要導出的文件名
  • -q:指明導出數據的過濾條件

4.備份與恢復

(1)備份

在MongoDB中可以使用 mongodump 命令來備份數據,該命令可以導出所有數據到指定目錄中。

[root@localhost ~]# mkdir /opt/backup #創建備份文件夾
[root@localhost ~]# mongodump -d kgc -o /opt/backup/
2018-07-16T16:44:47.254+0800    writing kgc.user1 to 
2018-07-16T16:44:47.254+0800    writing kgc.users to 
2018-07-16T16:44:47.256+0800    done dumping kgc.user1 (100 documents)
2018-07-16T16:44:47.256+0800    done dumping kgc.users (100 documents)

(2)恢復

MongoDB使用mongorestore命令來恢復備份的數據

mongorestore -d kgc2 --dir=/backup/kgc  ##恢復

5. 克隆集合

在MongoDB中可以將數據庫中的集合進行克隆。這裏將kgc數據庫中的user1集合克隆到另外一個實例。

(1)先查看MongoDB開啟的實例

[root@localhost ~]# netstat -ntap | grep mongod
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      1121/mongod         
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      10145/mongod  

(2)進入第二個實例27018端口

[root@localhost ~]# mongo --port 27018    ##進入另一個實例
> db.runCommand({"cloneCollection":"kgc.user1","from":"192.168.113.175:27017"})
{ "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
kgc     0.000GB
local   0.000GB
> use kgc
switched to db kgc
> show collections   #查看27018端口實例的集合
user1
## 完成克隆

7.進程管理

管理員可以對MongoDB進程進行管理和控制。
查看當前正在運行的進程的命令為:db.currentOp()。
終止正在運行的高消耗資源的進程管理的進程命令為:db.killOp(opid)。
技術分享圖片
技術分享圖片

CentOS 7下MongoDB 3.6 的安裝及基本操作