標籤:資料庫管理 reading rom 索引值對 tor count 結構 read document
今日趁周末得空,將近日在學習的MongoDB資料庫常用命令作以下整理,方便工作中查看
MongoDB的邏輯結構主要由文檔、集合和資料庫三部分組成。其中文檔是MongoDB的核心概念,它是MongoDB邏輯儲存的最小單元,相當於關係型資料庫中的一行記錄,多個文檔組成集合,集合相當於關係型資料庫中的表,多個集合組成資料庫。
| SQL術語 |
說明 |
MongoDB術語 |
說明 |
| database |
資料庫 |
database |
資料庫 |
| table |
資料庫表 |
collection |
集合 |
| row |
記錄 |
document |
行域 |
| column |
欄位 |
field |
域 |
| index |
|
index |
索引 |
| table joins |
表串連 |
|
不支援 |
| primary key |
主鍵 |
primary key |
自動將_id欄位設定為主鍵 |
一個MongoDB中可以建立多個資料庫,預設的資料庫為test。
預設資料庫:
- admin:從許可權的角度來看,這是root資料庫。將一個使用者添加到這個資料庫中,該使用者將自動繼承所有資料庫的許可權;
- local:這個資料永遠不會被複製,可用來儲存限於本地單台伺服器的任意集合;
- config:當Mongo用於分區設定時,config資料庫在內部使用,用於儲存分區的相關資訊。
MongoDB 登入、退出
#本地登入(預設執行個體連接埠號碼為:--port=27017,可以不寫)> mongo#登入遠程主機的執行個體> mongo --host 192.168.1.2 --port =27017#退出MongoDB> exit
資料庫
#建立資料庫(如果資料庫不存在,則建立資料庫,否則切換到指定資料庫)> use school#查看所有資料庫> show dbs#刪除school資料庫> use school> db.dropDatabase()#顯示資料庫操作命令> db.help()
集合
集合就是MongoDB文檔組,類似於關聯式資料庫管理系統中的把表格,集合存於資料庫中,集合沒有固定的結構,這樣子集合中可以存放不同格式和類型的表格。
#建立info集合> db.createcollection(‘info‘)#查看集合方法一:> show tabels方法二:> show colletctions#顯示info集合操作命令> db.info.help()
文檔(增、刪、改、查)
文檔是一個索引值對(BSON),不需要設定相同的欄位,並且相同的欄位不需要相同的資料類型。
1. 插入文檔
#插入一條記錄> db.info.insert({"id":1,"score":88,"address":"金川校區","hobby":["game","talk","sport"]})#向指定集合中插入一條文檔資料> db.collection.insertOne()#向指定集合中插入多條文檔資料> db.collection.insertMany()#通過迴圈批量插入資料> 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})#統計記錄數> db.info.count()
備份與恢複資料庫
- 通過mongoexport和mongoimport目錄來匯出匯入資料;
- 匯出資料檔案的格式為:JSON格式或CSV格式;
參數說明:
- -d:資料庫的名稱
- -c:collection的名稱
- -f:要匯出哪些列
- -o:要匯出的檔案名稱
- -q:到匯出資料的過濾條件
#備份本地school資料庫> [[email protected] ~]# mkdir /backup[[email protected] ~]# mongodump -d school -o /backup/2018-07-14T03:36:44.427-0400 writing school.info to2018-07-14T03:36:44.429-0400 done dumping school.info (99 documents)#恢複本地school資料庫至資料庫abc中> [[email protected] ~]# mongorestore -d abc --dir=/backup/school2018-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 instead2018-07-14T03:37:40.174-0400 building a list of collections to restore from /backup/school dir2018-07-14T03:37:40.175-0400 reading metadata for abc.info from /backup/school/info.metadata.json2018-07-14T03:37:40.187-0400 restoring abc.info from /backup/school/info.bson2018-07-14T03:37:40.208-0400 no indexes to restore2018-07-14T03:37:40.208-0400 finished restoring abc.info (99 documents)2018-07-14T03:37:40.209-0400 done#匯出本機school資料庫info集合> [[email protected] ~]# mongoexport -d school -c info -o /backup/info.json2018-07-14T03:44:41.610-0400 connected to: localhost2018-07-14T03:44:41.613-0400 exported 99 records#匯入備份資料至本機school資料庫user集合> [[email protected] ~]# mongoimport -d school -c user --file /backup/info.json2018-07-14T03:45:09.300-0400 connected to: localhost2018-07-14T03:45:09.330-0400 imported 99 documents#匯出本機school資料庫user1集合id=10的資料> [[email protected] ~]# mongoexport -d school -c user -q ‘{"id":{"$lt":10}}‘ -o /backup/top10.json2018-07-14T03:51:23.968-0400 connected to: localhost2018-07-14T03:51:23.969-0400 exported 9 records
複製資料庫
> show dbs> db.copyDatabase("school","school_1")
複製集合
#啟用如下2個執行個體> [[email protected] ~]# netstat -tunlp | grep mongodtcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 61249/mongodtcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN 61212/mongod#登入連接埠號碼為27018的執行個體> mongo --port 27018#查詢資料庫> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB#複製連接埠號碼為27017執行個體的school資料庫的info表至本執行個體資料庫中> db.runCommand({"cloneCollection":"school.info","from":"192.168.100.100:27017"})
使用者授權(認證登入)
#登入mongodbmongo#在admin資料庫建立新使用者root:123123> use admin> db.createUser({"user":"root","pwd":"123123","roles":["root"]})Successfully added user: { "user" : "root", "roles" : [ "root" ] }#退出> exit#關閉mongodb服務mongod -f /data/conf/mongodb1.conf --shutdown#帶認證參數方式啟動mongodb服務mongod -f /data/conf/mongodb1.conf --auth#登入mongodb資料庫mongo#查詢資料庫show dbs> 不顯示內容,這裡要先授權認證後才能執行操作> use admin#使用授權root使用者驗證> db.auth("root":"123123")#重新查詢,已經可以查詢資料了> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GBschool 0.000GB#退出> exit
進程管理
1. 查看當前正在啟動並執行進程的命令:db.currentOp() ------> 擷取opid進程號2. 終止正在啟動並執行高消耗資源的進程命令:db.killOP(opid)
更詳細的內容,請多參考 MongoDB線上協助文檔
MongoDB基本操作、備份還原及使用者管理