MongoDB基本操作、備份還原及用戶管理-創(chuàng)新互聯(lián)

今日趁周末得空,將近日在學(xué)習(xí)的MongoDB數(shù)據(jù)庫(kù)常用命令作以下整理,方便工作中查看

成都創(chuàng)新互聯(lián)成立于2013年,先為巴彥等服務(wù)建站,巴彥等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為巴彥企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

MongoDB的邏輯結(jié)構(gòu)主要由文檔、集合和數(shù)據(jù)庫(kù)三部分組成。其中文檔是MongoDB的核心概念,它是MongoDB邏輯存儲(chǔ)的最小單元,相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)中的一行記錄,多個(gè)文檔組成集合,集合相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)中的表,多個(gè)集合組成數(shù)據(jù)庫(kù)。

SQL術(shù)語(yǔ) 說(shuō)明 MongoDB術(shù)語(yǔ) 說(shuō)明
database數(shù)據(jù)庫(kù)database數(shù)據(jù)庫(kù)
table數(shù)據(jù)庫(kù)表collection集合
row記錄document行域
column字段field
indexindex索引
table joins表連接不支持
primary key主鍵primary key自動(dòng)將_id字段設(shè)置為主鍵

一個(gè)MongoDB中可以創(chuàng)建多個(gè)數(shù)據(jù)庫(kù),默認(rèn)的數(shù)據(jù)庫(kù)為test。

默認(rèn)數(shù)據(jù)庫(kù):

  • admin:從權(quán)限的角度來(lái)看,這是root數(shù)據(jù)庫(kù)。將一個(gè)用戶添加到這個(gè)數(shù)據(jù)庫(kù)中,該用戶將自動(dòng)繼承所有數(shù)據(jù)庫(kù)的權(quán)限;
  • local:這個(gè)數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制,可用來(lái)存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合;
  • config:當(dāng)Mongo用于分片設(shè)置時(shí),config數(shù)據(jù)庫(kù)在內(nèi)部使用,用于保存分片的相關(guān)信息。

MongoDB 登錄、退出

#本地登錄(默認(rèn)實(shí)例端口號(hào)為:--port=27017,可以不寫(xiě))
> mongo

#登錄遠(yuǎn)程主機(jī)的實(shí)例
> mongo --host 192.168.1.2 --port =27017

#退出MongoDB
> exit

數(shù)據(jù)庫(kù)

#創(chuàng)建數(shù)據(jù)庫(kù)(如果數(shù)據(jù)庫(kù)不存在,則創(chuàng)建數(shù)據(jù)庫(kù),否則切換到指定數(shù)據(jù)庫(kù))
> use school

#查看所有數(shù)據(jù)庫(kù)
> show dbs

#刪除school數(shù)據(jù)庫(kù)
> use school
> db.dropDatabase()

#顯示數(shù)據(jù)庫(kù)操作命令
> db.help()

集合

集合就是MongoDB文檔組,類似于關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中的把表格,集合存于數(shù)據(jù)庫(kù)中,集合沒(méi)有固定的結(jié)構(gòu),這樣子集合中可以存放不同格式和類型的表格。

#創(chuàng)建info集合
> db.createcollection('info')

#查看集合
方法一:
> show tabels

方法二:
> show colletctions

#顯示info集合操作命令
> db.info.help()

文檔(增、刪、改、查)

文檔是一個(gè)鍵值對(duì)(BSON),不需要設(shè)置相同的字段,并且相同的字段不需要相同的數(shù)據(jù)類型。

1. 插入文檔

#插入一條記錄
> db.info.insert({"id":1,"score":88,"address":"金川校區(qū)","hobby":["game","talk","sport"]})

#向指定集合中插入一條文檔數(shù)據(jù)
> db.collection.insertOne()

#向指定集合中插入多條文檔數(shù)據(jù)
> db.collection.insertMany()

#通過(guò)循環(huán)批量插入數(shù)據(jù)
> for(var i=1;i<100;i++)db.info.insert({"id":i,"name":"jack"+i})

2. 刪除文檔

#刪除info集合中id=1的文檔
> db.info.remove({"id":"1"})

3. 修改文檔

#修改info集合id=1的name值為"zhangsan"文檔
db.info.update({"id":"1"},{$set:{"name":"zhangsan"}})

4. 查詢文檔

#查詢info集合所有文檔
> db.info.find()

#查詢info集合id為1的文檔
> db.info.findOne({id:1})

#統(tǒng)計(jì)記錄數(shù)
> db.info.count()

備份與恢復(fù)數(shù)據(jù)庫(kù)

  1. 通過(guò)mongoexport和mongoimport目錄來(lái)導(dǎo)出導(dǎo)入數(shù)據(jù);
  2. 導(dǎo)出數(shù)據(jù)文件的格式為:JSON格式或CSV格式;
參數(shù)說(shuō)明:
  • -d:數(shù)據(jù)庫(kù)的名稱
  • -c:collection的名稱
  • -f:要導(dǎo)出哪些列
  • -o:要導(dǎo)出的文件名
  • -q:到導(dǎo)出數(shù)據(jù)的過(guò)濾條件
#備份本地school數(shù)據(jù)庫(kù)
> [root@localhost ~]# mkdir /backup
[root@localhost ~]# mongodump -d school -o /backup/
2018-07-14T03:36:44.427-0400    writing school.info to
2018-07-14T03:36:44.429-0400    done dumping school.info (99 documents)

#恢復(fù)本地school數(shù)據(jù)庫(kù)至數(shù)據(jù)庫(kù)abc中
> [root@localhost ~]# mongorestore -d abc --dir=/backup/school
2018-07-14T03:37:40.174-0400    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2018-07-14T03:37:40.174-0400    building a list of collections to restore from /backup/school dir
2018-07-14T03:37:40.175-0400    reading metadata for abc.info from /backup/school/info.metadata.json
2018-07-14T03:37:40.187-0400    restoring abc.info from /backup/school/info.bson
2018-07-14T03:37:40.208-0400    no indexes to restore
2018-07-14T03:37:40.208-0400    finished restoring abc.info (99 documents)
2018-07-14T03:37:40.209-0400    done

#導(dǎo)出本機(jī)school數(shù)據(jù)庫(kù)info集合
> [root@localhost ~]# mongoexport -d school -c info -o /backup/info.json
2018-07-14T03:44:41.610-0400    connected to: localhost
2018-07-14T03:44:41.613-0400    exported 99 records

#導(dǎo)入備份數(shù)據(jù)至本機(jī)school數(shù)據(jù)庫(kù)user集合
> [root@localhost ~]# mongoimport -d school -c user --file /backup/info.json
2018-07-14T03:45:09.300-0400    connected to: localhost
2018-07-14T03:45:09.330-0400    imported 99 documents

#導(dǎo)出本機(jī)school數(shù)據(jù)庫(kù)user1集合id=10的數(shù)據(jù)
> [root@localhost ~]# mongoexport -d school -c user -q '{"id":{"$lt":10}}' -o /backup/top10.json
2018-07-14T03:51:23.968-0400    connected to: localhost
2018-07-14T03:51:23.969-0400    exported 9 records

復(fù)制數(shù)據(jù)庫(kù)

> show dbs
> db.copyDatabase("school","school_1")

![image](https://note.youdao.com/favicon.ico)

克隆集合

#啟用如下2個(gè)實(shí)例
> [root@localhost ~]# netstat  -tunlp | grep mongod
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      61249/mongod
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      61212/mongod

#登錄端口號(hào)為27018的實(shí)例
> mongo --port 27018

#查詢數(shù)據(jù)庫(kù)
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

#克隆端口號(hào)為27017實(shí)例的school數(shù)據(jù)庫(kù)的info表至本實(shí)例數(shù)據(jù)庫(kù)中
> db.runCommand({"cloneCollection":"school.info","from":"192.168.100.100:27017"})

![image](https://note.youdao.com/favicon.ico)

用戶授權(quán)(認(rèn)證登錄)

#登錄mongodb
mongo

#在admin數(shù)據(jù)庫(kù)創(chuàng)建新用戶root:123123
> use admin
> db.createUser({"user":"root","pwd":"123123","roles":["root"]})
Successfully added user: { "user" : "root", "roles" : [ "root" ] }

#退出
> exit

#關(guān)閉mongodb服務(wù)
mongod -f /data/conf/mongodb1.conf --shutdown

#帶認(rèn)證參數(shù)方式啟動(dòng)mongodb服務(wù)
mongod -f /data/conf/mongodb1.conf --auth

#登錄mongodb數(shù)據(jù)庫(kù)
mongo

#查詢數(shù)據(jù)庫(kù)
show dbs
> 不顯示內(nèi)容,這里要先授權(quán)認(rèn)證后才能執(zhí)行操作

> use admin

#使用授權(quán)root用戶驗(yàn)證
> db.auth("root":"123123")

#再次查詢,已經(jīng)可以查詢數(shù)據(jù)了
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
school  0.000GB

#退出
> exit

進(jìn)程管理

1. 查看當(dāng)前正在運(yùn)行的進(jìn)程的命令:db.currentOp() ------> 獲取opid進(jìn)程號(hào)
2. 終止正在運(yùn)行的高消耗資源的進(jìn)程命令:db.killOP(opid)

更詳細(xì)的內(nèi)容,請(qǐng)多參考 MongoDB在線幫助文檔

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前題目:MongoDB基本操作、備份還原及用戶管理-創(chuàng)新互聯(lián)
URL鏈接:http://muchs.cn/article18/cdghdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)手機(jī)網(wǎng)站建設(shè)、網(wǎng)站策劃網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管