MongoDB基本操作、備份還原及使用者管理

來源:互聯網
上載者:User

標籤:資料庫管理   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()
備份與恢複資料庫
  1. 通過mongoexport和mongoimport目錄來匯出匯入資料;
  2. 匯出資料檔案的格式為: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")![image](https://note.youdao.com/favicon.ico)
複製集合
#啟用如下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"})![image](https://note.youdao.com/favicon.ico)
使用者授權(認證登入)
#登入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基本操作、備份還原及使用者管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.