您好,登錄后才能下訂單哦!
今日趁周末得空,將近日在學(xué)習(xí)的MongoDB數(shù)據(jù)庫常用命令作以下整理,方便工作中查看
MongoDB的邏輯結(jié)構(gòu)主要由文檔、集合和數(shù)據(jù)庫三部分組成。其中文檔是MongoDB的核心概念,它是MongoDB邏輯存儲(chǔ)的最小單元,相當(dāng)于關(guān)系型數(shù)據(jù)庫中的一行記錄,多個(gè)文檔組成集合,集合相當(dāng)于關(guān)系型數(shù)據(jù)庫中的表,多個(gè)集合組成數(shù)據(jù)庫。
SQL術(shù)語 | 說明 | MongoDB術(shù)語 | 說明 |
---|---|---|---|
database | 數(shù)據(jù)庫 | database | 數(shù)據(jù)庫 |
table | 數(shù)據(jù)庫表 | collection | 集合 |
row | 記錄 | document | 行域 |
column | 字段 | field | 域 |
index | index | 索引 | |
table joins | 表連接 | 不支持 | |
primary key | 主鍵 | primary key | 自動(dòng)將_id字段設(shè)置為主鍵 |
一個(gè)MongoDB中可以創(chuàng)建多個(gè)數(shù)據(jù)庫,默認(rèn)的數(shù)據(jù)庫為test。
- admin:從權(quán)限的角度來看,這是root數(shù)據(jù)庫。將一個(gè)用戶添加到這個(gè)數(shù)據(jù)庫中,該用戶將自動(dòng)繼承所有數(shù)據(jù)庫的權(quán)限;
- local:這個(gè)數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制,可用來存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合;
- config:當(dāng)Mongo用于分片設(shè)置時(shí),config數(shù)據(jù)庫在內(nèi)部使用,用于保存分片的相關(guān)信息。
#本地登錄(默認(rèn)實(shí)例端口號(hào)為:--port=27017,可以不寫)
> mongo
#登錄遠(yuǎn)程主機(jī)的實(shí)例
> mongo --host 192.168.1.2 --port =27017
#退出MongoDB
> exit
#創(chuàng)建數(shù)據(jù)庫(如果數(shù)據(jù)庫不存在,則創(chuàng)建數(shù)據(jù)庫,否則切換到指定數(shù)據(jù)庫)
> use school
#查看所有數(shù)據(jù)庫
> show dbs
#刪除school數(shù)據(jù)庫
> use school
> db.dropDatabase()
#顯示數(shù)據(jù)庫操作命令
> db.help()
集合就是MongoDB文檔組,類似于關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的把表格,集合存于數(shù)據(jù)庫中,集合沒有固定的結(jié)構(gòu),這樣子集合中可以存放不同格式和類型的表格。
#創(chuàng)建info集合
> db.createcollection('info')
#查看集合
方法一:
> show tabels
方法二:
> show colletctions
#顯示info集合操作命令
> db.info.help()
文檔是一個(gè)鍵值對(duì)(BSON),不需要設(shè)置相同的字段,并且相同的字段不需要相同的數(shù)據(jù)類型。
#插入一條記錄
> db.info.insert({"id":1,"score":88,"address":"金川校區(qū)","hobby":["game","talk","sport"]})
#向指定集合中插入一條文檔數(shù)據(jù)
> db.collection.insertOne()
#向指定集合中插入多條文檔數(shù)據(jù)
> db.collection.insertMany()
#通過循環(huán)批量插入數(shù)據(jù)
> for(var i=1;i<100;i++)db.info.insert({"id":i,"name":"jack"+i})
#刪除info集合中id=1的文檔
> db.info.remove({"id":"1"})
#修改info集合id=1的name值為"zhangsan"文檔
db.info.update({"id":"1"},{$set:{"name":"zhangsan"}})
#查詢info集合所有文檔
> db.info.find()
#查詢info集合id為1的文檔
> db.info.findOne({id:1})
#統(tǒng)計(jì)記錄數(shù)
> db.info.count()
#備份本地school數(shù)據(jù)庫
> [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ù)庫至數(shù)據(jù)庫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ù)庫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ù)庫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ù)庫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
> 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ù)庫
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
#克隆端口號(hào)為27017實(shí)例的school數(shù)據(jù)庫的info表至本實(shí)例數(shù)據(jù)庫中
> db.runCommand({"cloneCollection":"school.info","from":"192.168.100.100:27017"})
![image](https://note.youdao.com/favicon.ico)
#登錄mongodb
mongo
#在admin數(shù)據(jù)庫創(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ù)庫
mongo
#查詢數(shù)據(jù)庫
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
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在線幫助文檔
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。